如何停止屏幕阅读器读取所有错误span标签,其中包含role =" alert"?

时间:2016-04-20 10:38:06

标签: javascript jquery html5 wai-aria jaws-screen-reader

我正在为我的移动应用程序使用Chrome Vox屏幕阅读器。此阅读器会读取所有包含role="alert"的错误范围标记,我希望屏幕阅读器只读取第一个错误(role =' alert')。例如,我们可以看到Gmail帐户注册页面。我该如何实现这种情况?

2 个答案:

答案 0 :(得分:0)

如果你在错误的每个输入旁边放置跨度,那么这些不应该是role = alert而是ID。然后输入会想要aria-describedby =那个ID。您可能希望有一条消息警告,指出存在错误,并且要么关注那里,要么关注第一个与错误相关的输入,选择等等。

如果你想要一个表格顶部的错误框,并想要一个摘要,你可以把重点放在错误上,并制作一个指向输入的锚点(文本解释错误)。这不需要警报角色。

如果您只是想提醒用户有错误,可以在带有role = alert和aria-live = assertive的容器中输入一个短语,然后关注第一个输入错误。

答案 1 :(得分:0)

我必须解决相同的问题,最好的解决方案是根本不使用role=alert作为错误消息。相反,对可以验证的元素使用aria-describedby,并将其指向包含错误消息的范围。

这将确保读取焦点元素的错误消息。

与警报相比,此方法对用户更友好,因为不会立即读取错误消息(如问题所述),这可能会造成混淆。而是在浏览页面时读取焦点所在元素的错误消息。

示例:

      <div> 
         <input type="text" 
                    name="username" 
                    id="username" 
                    aria-describedby="username_error"
                    aria-invalid="true"/> 
          <span class="error" id="username_error">Username is unknown</span> 
      </div> 

更多提示:

  • 通过设置aria-invalid=true属性,向屏幕阅读器提示元素包含错误
  • ARIA 1.1定义了“ aria-errormessage”属性,该属性在广泛使用adopted时就可以代替aria-describedby