Поля формы
Чтобы стили применялись к элементам формы, у нее нужно указать class="form"
.
Так же мы рекомендуем озаглавливать форму и указывать через атрибут aria-labelledby
идентификатор заголовка формы. В таком случае пользователи, использующие экранные чтецы, смогут бытро идентифицировать назначение формы.
Поля для ввода
Чекбоксы и радиокнопки
Метки полей
Все поля формы должны иметь свою метку.
Связать поля и метки можно несколькими способами:
Обязательные поля
Атрибут required
у поля предотвращает отправку формы, пока поле не будет заполнено.
Если необходимо лишь сообщить незрячему пользователю об обязательности поля и не запрещать при этом отправку формы (например, при backend валидации), то укажите для поля атрибут aria-required="true"
. Экранные чтецы в этом случае озвучает незрячему пользователю, что поле является обязательным.
Так же добавляйте к метке поля пояснение, что поле обязательно для заполнения. Например:
Ошибки валидации
В настоящем разделе мы рассмотрим лишь принципы сообщения пользователям о наличии ошибок в формах. Практическая реализация, как правило, под каждую форму будет уникальна.
Общие положения:
- Никогда не полагайтесь на цветовое выделение поля как выделение ошибки. Например, пользователи с некоторыми формами дальтонизма не смогут отличить красное поле от обычного или валидного.
- Всегда дополняйте визуальное выделение не валидного поля сообщением об ошибке. Из сообщения должно быть понятно не только наличие ошибки, но и дальнейшие действия пользователя для ее предотвращения. Напрмер:
- Плохо: Цена введена неверно.
- Хорошо: Поле "Цена" должно содержать только числовые символы.
- Плохо: "Текст обращения" слишком короткое.
- Хорошо: Поле "Текст обращения" должно содержать не менее 100 символов текста.
- Выводите сообщение об ошибках несколькими способами: одним сообщением на странице и/или сообщением у каждого поля. Примеры рассмотрим ниже.
Вывод общего сообщения на странице
Если вы отправляете форму через ajax
, то нужно создать блок с атрибутом role="alert"
и поместить в него все сообщения. После этого блок нужно добавить на страницу на видное место, чтобы зрячие пользователи его заметили. Как только блок с role="alert"
появится на странице, экранные чтецы озвучат его содержимое и незрячие пользователи тоже узнают об ошибках.
Дополнительно для полей, имеющих ошибки, поставьте атрибут aria-invalid="true"
– электронные чтецы в данном случае дополнительно озвучат, что поле не валидно.
Важно. Если вывод сообщения об ошибке происходит с перезагрузкой страницы, то измените title
страницы и/или заголовок h1
на сообщение о присутствии ошибок на странице.
Вывод сообщения об ошибке непосредственно для поля
Добавьте не валидному полю атрибут aria-invalid="true"
.
Добавьте рядом с полем текст сообщения об ошибке.
Свяжите сообщение об ошибке и поле через общее значение атрибутов id, aria-labelledby
.
Экранные чтецы в данном случае при работе с полем не только зачитают, что оно неверно заполнено, но и озвучат сообщение об ошибке, чтобы пользователь понял свои дальнейшие действия.
Рекомендации
Мы рекомендуем использовать оба подхода, то есть сообщать пользователяем в блоке с role="alert"
о наличии ошибок и дополнительно указывать ошибки для каждого отдельно взятого поля. Таким образом форма будет максимально доступна не только пользователям с нарушениям зрения, но и рядовым пользователям сайта.