更改 html 表单元素的读取顺序



我正在设计这样的表单,其中该行中标签的底部以直线对齐,该行中输入字段的顶部以直线对齐。

由于CSS中的一些限制(我们无法固定高度,因为它会有所不同(,我必须将表单元素的标签放在第一行,然后将它们各自的输入字段放在下一行(这样输入字段就放在它们的标签正下方(。

我用这个html结构测试了键盘和Tab顺序,它工作正常。我想知道 JAWS 或任何其他屏幕阅读器中的阅读顺序是否不正确。

对更改阅读顺序的任何方法的任何建议或是否可以继续使用此 HTML 结构,因为 Tab 键顺序正在工作?

在 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>

不得不说这是一个黑客,它不是特别强大,我当然不会推荐它用于响应式网站。这纯粹是所需的布局和浏览器支持导致了这种情况。

如果不查看您的标记,就不可能准确分辨,但听起来您有一堆输入,然后是一排标签......这对于可访问性来说并不理想。

您可以将窗体控件嵌套在 Label 元素中,将窗体控件的显示设置为块以实现相同的效果,同时还提高了可用性和可单击性。

相关内容

  • 没有找到相关文章

最新更新