我正在寻找一种可访问的方式来定义一个字段是接受整数还是十进制数量。输入字段有两种:简单<input>
表示十进制值(美元和美分),<input>
表示尾随“.00”表示需要整数(美元)只)。
示例:
由于“.00”不在<label>
中,因此屏幕阅读器不会读取它。我不得不使用丑陋的黑客来使其可访问:
<label>Total amount due ($): <span style="display:none;">Please enter dollars and cents</span></label>
<label>Amount owed ($): <span style="display:none;">Please enter a dollar amount</span></label>
(即使隐藏了范围,当输入有焦点时,JAWS会读取它。)
什么是更方便和语义的方式来通知辅助技术正在请求数字格式?
一些注意事项:
type="number"
。答案 0 :(得分:4)
假设您的字段是同一理论<form/>
中的示例,我会为您提供一对建议。
清楚地指定标签中的类型。如果您有多个必须在应用程序中输入的金额,其中一些需要小数美分,而其他只需要全部美元,您应该确定每个名称的明确名称,并在适当的标签内一致且专门地使用它们。
最简单的形式就像将“欠款”更改为“所欠美元和美分”或“欠下全部美元”一样简单
在第二个标签中添加说明。 HTML <label>
元素多年来一直有for
属性,没有理由你没有秒每个表单的标签,带有特定的数据输入指令。 (将这些辅助标签赋予不同的CSS类以便对它们进行不同的样式将完全适用。)
举例来说:
<p>
<label for="txtOwed">Whole Dollars Owed</label>
<input id="txtOwed" name="txtOwed" type="text" />
<label for="txtOwed" class="instruct">Enter whole dollars only.</label>
</p>
答案 1 :(得分:4)
为什么不使用Title属性。在&lt; input type =“text”/&gt;标题属性由JAWS和大多数其他读者阅读。所以扩展DougM的答案就像
<label for="txtTotal">Total amount due ($):
<input type="text" id="txtTotal"
title="Total amount due. Please enter dollars and cents." />
</input>
<label for="txtAmountOwed">Amount Owed($):
<input type="text" id="txtAmountOwed"
title="Amount owed. Please enter a dollar amount." />
</input>
我相信标题会覆盖JAWS中的标签,而其他读者会读取这两个标题,因此标题属性中的标签文本会重复。
答案 2 :(得分:1)
我建议使用placeholder
属性。当使用Tab或快速导航键移动时,JAWS会读取它。
答案 3 :(得分:0)
使用HTML 5输入模式属性,例如pattern =“[A-Za-z] {3}” 将导致输入只允许3个没有数字或特殊字符的字符,模式属性中的文本只是一个正则表达式。