Атрибут novalidate: отключение автоматической проверки при отправке
Novalidate у формы отключает интерактивную проверку ограничений браузером при отправке. Он может понадобиться при собственной модели сообщений об ошибках, но не делает значения корректными.
Назначение
Novalidate у формы отключает интерактивную проверку ограничений браузером при отправке. Он может понадобиться при собственной модели сообщений об ошибках, но не делает значения корректными.
Как это работает
Required и type продолжают описывать ограничения, а validity позволяет читать состояние поля. Пример показывает разметку отдельной тестовой формы; обработчик /demo-check нужно реализовать самостоятельно и не использовать на рабочем сайте без проверки.
Пример
<form action="/demo-check" method="post" novalidate><label for="nv-email">Учебный email</label><input id="nv-email" name="email" type="email" required><button type="submit">Проверить на тестовом сервере</button></form>
Что должно получиться
При обычной отправке этой формы браузер не останавливает действие своим интерактивным сообщением required. Сервер всё равно должен проверить значение и вернуть понятный результат; готового обработчика в примере нет.
Граница применения и частая ошибка
Novalidate не равно успешной проверке и не отменяет безопасность серверной стороны. Если вы убрали нативные сообщения, предоставьте доступные собственные ошибки и сохраните введённые данные. Запись novalidate="false" не выключает логический атрибут.
Самостоятельная проверка
В локальной форме сравните validity.valid пустого поля до и после добавления novalidate. Затем сравните поведение кнопки отправки. Не снимайте ограничения рабочего проекта только ради устранения мешающего сообщения.