我正在尝试让屏幕阅读器读取已禁用的数字微调器/文本框的值,以便它们不可编辑。这些框的值在上下文中很重要,但屏幕阅读器(在本例中为 JAWS)仅将小部件的值读取为"不可用"。我尝试将 aria-required='true' 设置为没有这样的运气。有没有其他方法可以让屏幕阅读器说出这些值?
前任:
<input id='exampleInput' disabled='true' aria-required='true'>1</input>
在这里使用只读属性是正确的选项。
如果这会弄乱你的JavaScript,那么我建议更改你的JavaScript,以便它会检查除禁用属性以外的其他内容。
这可以通过使用 Css 类或添加新属性来完成,或者您可以向 DOM 对象添加新字段并使用它。
我最近遇到了类似的问题,我的解决方案是对所有禁用的按钮使用一些信息文本,这只能由屏幕阅读器查看。我使用了一个按钮元素,因此它仍然保留在 Tab 键顺序中的位置,因此,如果屏幕阅读器用户正在通过 Tab 键宣布的表单,则需要实现一些代码,以便在启用实际输入后从 DOM 中删除元素。
当使用NVDA进行测试时,隐藏元素宣布为"数据值转到此处元素已禁用",显然,您可以使用所需的任何文本。
.HTML
<input type="text" name="myDisabledElement" disabled="disabled">
<button aria-disabled=”true” class="sr-only">
data value goes here element disabled
</button>
.CSS
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0,0,0,0);
border: 0;
}
你可以在这里看到抽象动作:http://codepen.io/chris-hore/pen/LEKyeM