aria-live =“polite”不会宣布所选的表单控件,如单选按钮/复选框

时间:2016-02-18 09:30:11

标签: accessibility wai-aria

面对aria-live="polite"的奇怪问题,如果加载的内容具有表单控件,例如单选按钮或复选框。

NVDA只读取单选按钮的文本,但不会公布有关选择或检查哪一个的任何内容。

<a aria-label="Click Me" href="#">Click Me</a>
<div id="myForm" aria-live="polite"></div>

以下是 plunker

1 个答案:

答案 0 :(得分:1)

抱歉,您还没有得到一个好的答案。欢迎来到无障碍世界。

您的问题与aria-live=“polite”无关 - 它只是NVDA的工作方式。所以我想好消息是你做得对。对于以下示例,我将默认选项更改为&#34; Two Day&#34;所以我可以确认正在阅读的内容并不是第一个选项。

通过您的代码,我听到了:

  

点击我链接

然后按SPACE激活链接,我听到:

  

选择送货方式:

     

隔夜

     

两天&lt; - 你想要这样说&#34;选择/检查/等&#34;

     

接地

如果我进入群组,我会听到:

  

选择送货方式:

     

未选中单选按钮两天

为了获得您想要的行为,我更新了您的HTML,以生成包含文字<span>的不可见Default is "Two day"。现在我听到的是:

  

点击我链接

然后按SPACE激活链接,我听到:

  

选择送货方式默认为两天:

     

隔夜

     

两天

     

接地

这就是它的样子(注意图例中的跨度):

<fieldset role="radiogroup" aria-labelledby="shipMethod" id="myFieldSet">
    <legend id="shipMethod">Choose a shipping method<span style="display:none;"> Default is "Two day"</span>:</legend>
    <input name="shipping" id="overnight" type="radio" value="overnight">
    <label for="overnight">Overnight</label>
    <br>
    <input name="shipping" id="twoday" type="radio" value="twoday" checked="checked">
    <label for="twoday">Two day</label>
    <br>
    <input name="shipping" id="ground" type="radio" value="ground">
    <label for="ground">Ground</label>
</fieldset>

你也可以通过改变控制焦点来获得类似的效果,但对于使用屏幕阅读器的用户而言,这有点不太酷。

这并不难实现,在某种程度上是一种优雅,因为需要额外帮助的用户无需为其他用户更改它。