Рис . 3 .13 . Так в Opera выглядит стандартное сообщение об ошибке в адресе (слева)
и наше специальное сообщение для дня «разговариваем как злобные пираты» (справа)
К сожалению, на сегодняшний день только Opera в полной мере поддерживает эту воз-
можность. В действительности, неясно даже, должно ли событие
submit
срабатывать при
недопустимом содержимом поля. Может быть, нужно прослушивать событие
invalid
для
элемента? Но если мы задаем специальное сообщение об ошибке, поле остается в состоя-
нии «недопустимо» даже после того, как ошибка исправлена. Таким образом, проверка на
допустимость повторяется, и на второй раз специальное сообщение удаляется — но для
этого пользователю приходится дважды нажимать на кнопку отправки данных, хотя он
всего лишь исправил ошибку.
Получается, что единственный правильный способ задания специального сообщения об
ошибке заключается в том, чтобы проверять валидность данных в поле при любом нажатии
клавиши. Лично мне кажется странной необходимость опрашивать элемент
input
, однако,
в каком-то смысле, он работает так же, как псевдоселектор CSS
:invalid
. Итак, мы можем
отредактировать предыдущий пример кода:
custom validity
Однако если вас не устраивает то, как работают специальные сообщения валидации,
вы можете задать поведение вашей валидации так, чтобы оно соответствовало вашему
приложению. Когда вы запускаете
setCustomValidity
, метод создает DOM-атрибут
validationMessage
, доступный только для чтения. Это можно использовать для управле-
ния валидацией, о чем мы и поговорим в следующем разделе.
Кстати, если вы предпочитаете писать код разметки, ориентированный на одного произ-
водителя браузера, то можете переопределять сообщения об ошибках в Firefox, применяя
уникальный атрибут
x-moz-errormessage
: