09. Формы и валидация
Что такое формы
Форма — это способ взаимодействия пользователя с сайтом. Она позволяет отправлять данные: имя, email, пароль, сообщение и т.д.Форма — это мост между пользователем и сервером. JavaScript проверяет данные перед отправкой, чтобы всё было корректно.
Пример формы
```html <form id="myForm"> <input type="text" id="name" placeholder="Ваше имя"> <input type="email" id="email" placeholder="Email"> <button type="submit">Отправить</button> </form> <p id="message"></p> ```Получение данных из формы
Чтобы получить данные, используем свойства `.value` у элементов формы.
let form = document.querySelector('#myForm');
form.addEventListener('submit', function(event) {
event.preventDefault(); // отменяем стандартную отправкуlet name = document.querySelector('#name').value;
let email = document.querySelector('#email').value;
console.log('Имя:', name);
console.log('Email:', email);
});
Проверка данных (валидация)
Перед тем как отправлять данные, важно убедиться, что они корректные.Пример базовой проверки
form.addEventListener('submit', function(event) {
event.preventDefault();let name = document.querySelector('#name').value.trim();
let email = document.querySelector('#email').value.trim();
let message = document.querySelector('#message');
if (name === '' || email === '') {
message.textContent = 'Пожалуйста, заполните все поля';
message.style.color = 'red';
} else {
message.textContent = 'Данные отправлены успешно!';
message.style.color = 'green';
}
});
Проверка email
JavaScript позволяет использовать регулярные выражения (RegExp), чтобы проверить формат email.
function validateEmail(email) {
let pattern = /^[\w.-]+@[\w.-]+\.[a-z]{2,}$/i;
return pattern.test(email);
}console.log(validateEmail('test@mail.com')); // true
console.log(validateEmail('invalid@com')); // false
Пример с валидацией email
form.addEventListener('submit', function(event) {
event.preventDefault();let email = document.querySelector('#email').value.trim();
let message = document.querySelector('#message');
if (!validateEmail(email)) {
message.textContent = 'Введите корректный email';
message.style.color = 'red';
} else {
message.textContent = 'Email верный!';
message.style.color = 'green';
}
});
Проверка длины пароля
let password = document.querySelector('#password');
password.addEventListener('input', function() {
if (password.value.length < 6) {
password.style.borderColor = 'red';
} else {
password.style.borderColor = 'green';
}
});
Работа с сообщениями об ошибках
Можно создавать динамические подсказки для каждого поля.
function showError(input, message) {
let error = document.createElement('div');
error.classList.add('error');
error.style.color = 'red';
error.textContent = message;
input.after(error);
}
Мини-проект: Форма регистрации
Создадим форму с проверкой имени, email и пароля.```html <form id="regForm"> <input type="text" id="username" placeholder="Имя"> <input type="email" id="userEmail" placeholder="Email"> <input type="password" id="userPass" placeholder="Пароль"> <button type="submit">Регистрация</button> </form> <p id="result"></p> ```
let regForm = document.querySelector('#regForm');
let result = document.querySelector('#result');regForm.addEventListener('submit', (e) => {
e.preventDefault();
let name = document.querySelector('#username').value.trim();
let email = document.querySelector('#userEmail').value.trim();
let pass = document.querySelector('#userPass').value.trim();
if (name.length < 2) {
result.textContent = 'Имя должно быть длиннее 2 символов';
result.style.color = 'red';
return;
}
if (!validateEmail(email)) {
result.textContent = 'Некорректный email';
result.style.color = 'red';
return;
}
if (pass.length < 6) {
result.textContent = 'Пароль должен быть минимум 6 символов';
result.style.color = 'red';
return;
}
result.textContent = 'Регистрация прошла успешно!';
result.style.color = 'green';
});
Советы новичкам
- Проверяйте поля до отправки формы — это экономит время пользователю.
- Используйте `.trim()` для удаления лишних пробелов.
- Регулярные выражения помогают проверять email, телефоны и пароли.
- Добавляйте визуальную обратную связь: цвет, сообщение, иконку — это улучшает UX.
Итоги урока
Теперь вы знаете:- Как получать данные из форм.
- Как проверять поля перед отправкой.
- Как использовать регулярные выражения для проверки email.
- Как создавать визуальные подсказки для ошибок.