Поиск по сайту
Ctrl + K
Вопросы по JS

Как проверять элементы формы с помощью API проверки ограничений?

Валидация форм — важный аспект разработки, который помогает обеспечить, чтобы пользователь вводил правильные и ожидаемые данные. Одним из способов реализации валидации в браузере является использование API проверки ограничений (Constraint Validation API). Он предоставляет удобные методы и свойства для проверки данных, введенных пользователем в элементы формы.

Основные методы API проверки ограничений

API проверки ограничений позволяет выполнять валидацию без написания собственного кода, так как используется встроенная валидация браузера. Однако, вы все равно можете добавлять свои собственные правила при необходимости. Вот основные методы и свойства, которыми вы можете пользоваться:

  • checkValidity() - проверяет, соответствует ли элемент правилам валидации.
  • setCustomValidity(error) - устанавливает пользовательское сообщение об ошибке, если данные не соответствуют требованиям.
  • reportValidity() - вызывает валидацию элемента и показывает сообщение, если валидация не пройдена.
  • Основные свойства

    • validity - объект, содержащий свойства, которые указывают на то, прошел ли элемент валидацию.
    • valueMissing - указывает, что обязательное поле не заполнено.
    • typeMismatch - указывает, что значение не соответствует типу.
    • patternMismatch - указывает, что значение не соответствует заданному шаблону.

    Пример валидации формы

    Рассмотрим простой пример проверки формы пользователя с использованием API проверки ограничений:

    <!DOCTYPE html>
    <html lang="ru">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Валидация формы</title>
    </head>
    <body>
        <form id="myForm">
            <label for="email">Электронная почта:</label>
            <input type="email" id="email" required>
            <span class="error-message" style="color: red; display: none;"></span>
            
            <label for="password">Пароль:</label>
            <input type="password" id="password" required minlength="6">
            <span class="error-message" style="color: red; display: none;"></span>
    
            <button type="submit">Отправить</button>
        </form>
    
        <script>
            const form = document.getElementById('myForm');
    
            form.addEventListener('submit', function(event) {
                let isValid = true;
                
                // Проверка email
                const emailInput = document.getElementById('email');
                const emailError = emailInput.nextElementSibling;
                if (!emailInput.checkValidity()) {
                    emailError.textContent = 'Пожалуйста, введите корректный адрес электронной почты.';
                    emailError.style.display = 'block';
                    isValid = false;
                } else {
                    emailError.style.display = 'none';
                }
    
                // Проверка пароля
                const passwordInput = document.getElementById('password');
                const passwordError = passwordInput.nextElementSibling;
                if (!passwordInput.checkValidity()) {
                    passwordError.textContent = 'Пароль должен содержать как минимум 6 символов.';
                    passwordError.style.display = 'block';
                    isValid = false;
                } else {
                    passwordError.style.display = 'none';
                }
    
                // Если валидация не пройдена, предотвращаем отправку формы
                if (!isValid) {
                    event.preventDefault();
                }
            });
        </script>
    </body>
    </html>
    

    Объяснение кода

  • HTML-форма: Создаем форму с двумя полями — для электронной почты и пароля, с атрибутами required и minlength, которые указывают на обязательность ввода.
  • JavaScript: Вешаем обработчик события submit на форму. При отправке формы проверяем каждый элемент с помощью метода checkValidity().
  • Сообщения об ошибках: Если поле не проходит валидацию, мы отображаем подходящее сообщение об ошибке и предотвращаем отправку формы с помощью event.preventDefault().
  • Заключение

    Использование API проверки ограничений упрощает процесс валидации форм. Вы можете легко использовать встроенные возможности браузера, чтобы обеспечить правильность введенных данных, делая свой интерфейс более удобным для пользователя. Надеюсь, этот пример поможет вам начать работу с валидацией форм!