У меня есть Javascript validation framework, который я создал, и я пытаюсь добавить к нему проверку HTML5. В моих рамках проверка выполняется путем привязки ограничений проверки к элементам с использованием атрибутов data-
. Это несколько похоже на то, как проверка HTML5 происходит с использованием таких атрибутов, как required
, min
, max
и т. Д.HTML5 Validation: Using element.validity.typeMismatch и element.validity.tooLong
У меня есть две проблемы прямо сейчас. Ну, они могут не быть проблемами, но я хотел бы лучше понять ситуацию, чтобы я мог решить, как двигаться вперед.
В первой проблеме у меня есть element.validity.typeMismatch
, которая установлена в true
, если значение элемента не соответствует типу элемента. Например, если у вас есть недопустимое значение URL для элемента с type="url"
или недействительным адресом электронной почты для элемента с type="email"
. Однако это поведение непоследовательно для чего-то вроде type="number"
. Причина непоследовательности в том, что браузер не позволит вам добавить недопустимые значения в input
с type="number"
(через пользовательский интерфейс или даже через DOM). В связи с этим element.validity.typeMismatch
никогда не устанавливается в true
и element.checkValidity()
всегда возвращает true
. Это поведение несовместимо с поведением на type="url"
и type="email"
, где вы можете указать и element.validity.typeMismatch
и element.checkValidity()
вернуть ожидаемые значения.
У меня проблема с использованием maxlength
. Существует ValidityState
недвижимости под названием tooLong
по адресу element.validity.tooLong
. Похоже, что это значение никогда не установлено в true
при взаимодействии с input
прямо из браузера, потому что вы никогда не сможете ввести значение, которое больше, чем значение * maxlength
. Кроме того, даже если вы можете установить значение , которое большеmaxlength
от DOM, element.validity.tooLong
снова, никогда не устанавливается в true
. Поэтому мне интересно, почему это свойство даже там, если оно более или менее бесполезно.
В настоящее время, как ожидается, что проверка HTML5 будет вести себя с этими ограничениями? Как сообщение об ошибке может быть создано для этих нарушений ограничений, если браузер не позволит вам ввести недопустимые значения?