Действительно ли валидация формы HTML5 действительно доступна? - PullRequest
1 голос
/ 24 января 2020

Итак, я прочитал много статей, в которых говорится, что проверка формы HTML 5 доступна (атрибут required, который препятствует отправке формы - это поле, оставлено пустым), но когда я тестировал свою форму на NVDA на Chrome и BackTalk на Android, если я не заполнил ввод, он фокусируется обратно на поле ввода (что хорошо!), Но оба программы чтения с экрана объявляют «Пожалуйста, заполните это поле», что бесполезно пользователю, так как они не объявляют метку поля.

Так что HTML5 одна проверка не доступна? Кроме того, можете ли вы объединить проверку HTML5 и пользовательскую JS?

Нужно ли писать пользовательскую проверку сайта клиента, чтобы сделать формы доступными?

1 Ответ

5 голосов
/ 24 января 2020

Краткий ответ

Да, стандартная проверка HTML5 доступна и пройдет WCAG2.1 AA, , но вы можете сделать намного лучше с некоторыми JavaScript.

Длинный ответ

Если вам нужна поддержка Inte rnet Explorer 9 или ниже, вам нужно будет использовать JavaScript (что согласно опросу WebAim - раздел «Браузеры») по-прежнему охватывает около 3,6% пользователей программ чтения с экрана).

Native HTML5 Проверка является очень хорошей отправной точкой, но есть ограничения (вы дали один в комментарии, некоторые программы чтения с экрана (NVDA) не объявляют снова метка, что означает, что пользователь должен физически запросить метку для чтения через элементы управления).

Другое дело, что, как только вы покидаете поле, оно обычно не сообщает, что допустило ошибку, пока Вы отправили форму (она предназначена для, но это не всегда так, в зависимости от скорости объявления, настроек и браузера).

Например, обновление aria-invalid полезно для немедленной обратной связи (и предоставляет поддержка старых браузеров, хотя и более надежная с «необычными» программами чтения с экрана).

Использование области aria-live для немедленной обратной связи onblur (или ограничено / отклонено) также является полезным и лучшим решением.

Еще одна вещь заключается в том, что собственная проверка на самом деле не очень эффективна. Например, fff@fff отображается как действительный адрес электронной почты и позволяет отправлять форму в поле type="email", также как и type="url", что позволяет отправлять https://fff (по крайней мере Chrome).

Я мог бы go продолжить с другими вещами, такими как предоставление более подробных инструкций о том, как исправить ошибки (особенно для таких вещей, как телефонные номера), но вы поняли.

В принципе, используйте столько * * * * * * * * * Родные HTML5 функции как можно более обеспечивают solid заземление и хороший запасной вариант для JavaScript ошибок / людей, не использующих JavaScript. Затем используйте CSS и JS, чтобы улучшить опыт для всех.

Кроме того, вы можете объединить HTML5 проверки и пользовательские JS?

You может, и вы должны знать, что в итоге вы удваиваете валидацию (что не так уж и плохо, как я говорил в качестве запасного варианта).

Прелесть в том, что вы можете использовать псевдоселекторы в ваших JavaScript для нацеливания полей по типу, избавляя от необходимости добавлять ненужные классы и т. Д. c.

Например, можно использовать document.querySelectorAll('input[type=email]') выбрать любой адрес электронной почты для проверки или document.querySelectorAll('input[required]'), чтобы найти все обязательные поля.

Вы также можете использовать такие вещи, как max="100" на ползунках / цифрах c, чтобы установить диапазоны проверки «на лету» и при этом иметь запасной вариант без JavaScript.

Как вы можете себе представить, давайте напишем библиотеку, если вы не можете найти готовую библиотеку, пригодную для повторного использования практически в любой форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...