логотип PurpleSchool
Иконка входа
Вход
  • Обучение
  • Войти
логотип PurpleSchool

Событие invalid в JavaScript

Автор

Дмитрий Нечаев

Событие invalid в JavaScript срабатывает, когда элемент формы не проходит проверку валидности при попытке отправки формы. Это событие является частью встроенной в HTML5 системы валидации форм, которая позволяет разработчикам обеспечивать базовую проверку данных на стороне клиента без необходимости писать сложные скрипты. Событие invalid можно использовать для отображения пользовательских сообщений об ошибках, улучшения пользовательского интерфейса и повышения общей удобности форм. В этой статье мы рассмотрим, как использовать событие invalid для управления валидацией форм на веб-страницах.

Как работает событие "invalid"?

Событие invalid автоматически срабатывает для HTML элементов формы (например, <input>, <select>, <textarea>), которые имеют атрибуты валидации, такие как required, type, pattern и другие, если их значения не соответствуют установленным правилам. Событие срабатывает в момент попытки отправки формы, если какие-либо из данных не валидны.

Примеры использования события "invalid"

Отображение сообщений об ошибках

// Получение элемента input
const input = document.getElementById('username');

// Добавление обработчика события invalid
input.addEventListener('invalid', function(event) {
    // Предотвращение стандартного сообщения об ошибке
    event.preventDefault();

    // Проверка, если поле пустое
    if (!event.target.value) {
        input.setCustomValidity('Пожалуйста, введите ваше имя пользователя.');
    } else {
        input.setCustomValidity('Имя пользователя не соответствует требованиям.');
    }

    // Отображение сообщения об ошибке
    input.reportValidity();
});

В этом примере, если поле ввода username не проходит валидацию (например, поле пустое или не соответствует заданному шаблону), то выводится соответствующее сообщение об ошибке.

Кастомизация визуального отображения ошибок

Событие invalid также можно использовать для кастомизации визуального стиля элементов формы, которые не прошли валидацию.

const form = document.querySelector('form');
const inputs = form.querySelectorAll('input');

inputs.forEach(input => {
    input.addEventListener('invalid', () => {
        input.classList.add('error');
    });

    input.addEventListener('input', () => {
        input.classList.remove('error');
    });
});

В этом случае при возникновении ошибки элементу добавляется класс error, который может изменять его внешний вид (например, делать границу красной). При изменении содержимого поля (событие input) класс ошибки удаляется.

Рекомендации по использованию

  1. Дружелюбные сообщения: Стандартные браузерные сообщения об ошибках могут быть непонятны пользователям. Используйте setCustomValidity() для создания более понятных и дружелюбных текстов ошибок.
  2. Визуальная обратная связь: Кастомизируйте стили для невалидных полей, чтобы пользователи могли легко идентифицировать, что требует исправления.
  3. Работа с мобильными устройствами: Убедитесь, что ваша валидация и сообщения корректно отображаются и на мобильных устройствах.

Заключение

Использование

события invalid в JavaScript позволяет значительно улучшить процесс валидации форм, делая его более интерактивным и понятным для пользователей. Это обеспечивает не только техническую корректность введённых данных, но и улучшает общее впечатление от взаимодействия с вашим веб-сайтом.

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile