При использовании атрибутов HTML5 для разметки формы с обязательными полями JAWS 14 в Firefox (и возможных других) объявляет пустые поля как "недопустимые записи" при первом обращении к ним (то есть, когда пользователь впервые сталкивается с поле).
<input type="text" required value="">
Использование aria-required="true"
позволяет избежать неприятного сообщения (и JAWS по-прежнему информирует пользователя о том, что это поле необходимо), однако вы теряете функции проверки формы HTML5 (предотвращая отправку формы, подсказки, созданные браузером, для руководства пользователя и т.д.).
- Как вы можете обойти объявление "недействительной записи"?
- Почему JAWS это делает?
Я бы понял, описывая поле как "недопустимое", если пользователь пропускает его (оставляя его пустым и, следовательно, недействительным), а затем снова фокусируется на нем. Текущая реализация запутывает, так как пользователю говорят, что они ввели что-то не так в поле, которое они даже не знали.
Я читал о хаках, которые устанавливали aria-invalid
с JavaScript, чтобы обмануть JAWS, но я бы очень хотел, чтобы вы не наблюдали за взаимодействием с пользователем (событие focus
и т.д.) в каждом отдельном поле на странице со многими входами. В настоящее время я использую <label>Label text <span style="display:none;">required field</span></label>
, но это очень хакерское, не смысловое решение (не говоря уже о том, что я теряю преимущества HTML5 required
).