0

我正在尝试找到一种方法,让屏幕阅读器(如 Windows Narrator 的 NVDA)停止读取输入值并改为读取aria-describedby唯一值。

在这种情况下,我有一个 Web 组件,它是一个掩码输入字段。假设它配置了一个电话掩码,设置为(___) ___-____下划线只能是数字。现在屏幕阅读器会读取left parens, 3 lines, right parens, space...等等,然后读取我设置的aria-describedby值,例如“电话号码,1231231234”,它使用我的组件的未屏蔽值。

我想要的是屏幕阅读器只说“电话号码,1231231234”,这是我的aria-describedby价值并跳过其余部分,因此它保持简短并避免说出可能会使受损用户感到困惑的事情。

一些背景知识,也许这可以改变一些响应,我的组件是用 Aurelia 构建的,我正在利用绑定系统来更新值。

这有可能吗?我有几个选择?我完全偏离了我想要实现的目标吗?

谢谢!

4

1 回答 1

1

使用这种方法来保持可访问性并没有什么可做的。屏幕阅读器读出输入字段的内容是非常重要的,否则当用户输入一个数字时,它不会告诉他们这个数字是什么——即使他们决定返回一个字符或转发一个字符, value 将读取标签而不是他们输入的内容。我想你正在使用的输入掩码是使用 javascript 来替换用户在按键上提交的掩码字符?

通常最好的做法是在标签或与标签关联的描述性文本中概述所需的输入格式。这将允许有视力的用户轻松匹配所需的格式,并允许视力障碍用户使用他们的键盘导航输入值,同时完全了解所需的格式是什么。我已经整理了一个简单的例子。

<label for="textInput">Phone Number</label>
<span id="phoneDesc">Please use the following format: (xxx)xxx-xxxx</span>
<input id="textInput" type="text" aria-describedby="phoneDesc" />

研究输入掩码的一般可用性也可能会有所帮助——很多人往往会觉得它们很麻烦。 https://www.nngroup.com/articles/stop-password-masking/

如果您决心使用它们并且不介意与基于“线”的方法不同的方法,也许可以尝试一下politespace(我没有尝试过,但它可能值得根据您的需求进行评估) https:// github.com/filamentgroup/politespace

于 2017-06-09T20:15:12.020 回答