Изменить порядок чтения элементов формы HTML
Я создаю такую форму, где нижняя часть меток в этой строке выравнивается по прямой линии, а верхняя часть полей ввода в этой строке выравнивается по прямой линии.
Из-за некоторых ограничений в CSS (мы не можем фиксировать высоту, поскольку она будет меняться), я должен поместить метки элементов формы в первую строку, а затем поместить соответствующие поля ввода в следующую строку (так, чтобы ввод поля расположены чуть ниже их меток).
Я протестировал клавиатуру и порядок вкладок с этой HTML-структурой, она отлично работает. Мне интересно, что порядок чтения в JAWS или любой другой программе чтения с экрана не будет правильным.
Любые рекомендации для любого метода, чтобы изменить порядок чтения, или это нормально, чтобы продолжить эту структуру HTML, так как порядок вкладок работает?
2 ответа
В структуре HTML каждому вводу должен предшествовать его ярлык, а не иметь ярлыки в одной строке и вводы в следующей.
Тем не менее, у вас есть очень определенный дисплей, который вы хотите, и вы поддерживаете IE7 (без display: table
), так что я думаю, что лучше всего использовать таблицу.
Вы можете сделать это доступным, если принять во внимание эти вещи:
Используйте базовую таблицу макетов для своей формы и добавьте дополнительный атрибут в тег таблицы:
<table role="presentation">
Это означает, что таблица не является таблицей с точки зрения доступности. (Я только рекомендую это при поддержке макетов IE7!) Не используйте <th>
теги тоже.
Главное для программ чтения с экрана при его заполнении было бы явным отношением метки-ввода.
<label for="input_id">My label</label>
<input type="text" id="input_id">
Вы можете сказать, если это работает, нажав на метку, он должен поставить курсор на входе.
Тем не менее, ваш взгляд на чтение требует другого подхода. Когда у вас есть ряд элементов вверху, которые относятся к ряду элементов внизу, это определение таблицы данных. Поэтому, когда страница сохранена (или, тем не менее, она конвертируется в представление для чтения), используйте таблицу данных, например:
<table>
<tr>
<th>Customer account number</th>
[other <th>s]
</tr>
<tr>
<tr>
<td>023456353434</td>
...
При считывании программой чтения с экрана она будет читать "заголовок" (например, номер счета клиента) перед содержимым (023...). Итак, изменения:
- Удалить роль
- Преобразовать верхний ряд в
<th>
s
Надо сказать, что это взлом, он не особенно надежен, и я, конечно, не рекомендую его для адаптивного сайта. Это чисто требуемый макет и поддержка браузера, которые приводят к этому.
Без просмотра вашей разметки невозможно точно сказать, но звучит так, будто у вас есть набор входов, а затем ряд меток... это не идеально для доступности.
Вы можете вкладывать элемент управления формы в элемент label, устанавливая блокировку отображения элемента управления формы для достижения того же эффекта, а также повышая удобство использования и кликабельность.