04-11-25 13:44:24

<form id="loginForm">
<input type="text" name="username" placeholder="Введите имя пользователя" required />
<input type="password" name="password" placeholder="Введите пароль" required />
<button type="submit">Войти</button>
</form>
const form = document.getElementById('loginForm');
const sameForm = document.forms['loginForm'];
const firstForm = document.forms[0];
console.log(form.action);
console.log(form.elements['username'].value);
form.addEventListener('submit', e => {
e.preventDefault();
const data = new FormData(form);
fetch('/login', { method: 'POST', body: data });
});
Позволяет удобно работать с данными формы:
const data = new FormData(form);
console.log(data.get('username'));
form.addEventListener('submit', e => {
e.preventDefault();
const username = form.elements['username'].value.trim();
const password = form.elements['password'].value.trim();
if (!username || !password) {
alert('Заполните все поля.');
return;
}
console.log('Отправка:', { username, password });
});
const emailInput = document.querySelector('#email');
form.addEventListener('submit', e => {
e.preventDefault();
if (!emailInput.validity.valid) {
emailInput.setCustomValidity('Введите корректный email!');
emailInput.reportValidity();
} else {
emailInput.setCustomValidity('');
console.log('Форма успешно отправлена!');
}
});
form.addEventListener('submit', async e => {
e.preventDefault();
const data = new FormData(form);
const res = await fetch('/api/submit', { method: 'POST', body: data });
const result = await res.json();
console.log('Ответ сервера:', result);
});Две главные угрозы:
Защита от XSS
Никогда не вставляйте данные напрямую в HTML:
element.textContent = userInput; // безопасно
Избегайте innerHTML, если строка не прошла очистку.
Защита от CSRF
Используйте токен:
<input type="hidden" name="csrf_token" value="abc123xyz" />
Проверяйте токен на сервере.
fetch('/api/comment', {
method: 'POST',
headers: { 'X-CSRF-Token': csrfToken },
body: new FormData(form)
});