单选按钮或复选框是不是允许使用 aria-required?

Posted

技术标签:

【中文标题】单选按钮或复选框是不是允许使用 aria-required?【英文标题】:Is aria-required allowed on radio buttons or checkboxes?单选按钮或复选框是否允许使用 aria-required? 【发布时间】:2016-03-21 21:19:53 【问题描述】:

我正在使用 ax Chrome 扩展程序来检查可访问性,但我的单选按钮和复选框收到违规消息。查看“aria-required”的 W3C 文档,您可以在此处找到它:W3C on aria-required,没有为使用的角色列出任何输入。

根据这个问题:html5: How to use the “required” attribute with a “radio” input field,您只需将一个单选按钮标记为必需。但是,我正在尝试将 aria 与旧版浏览器一起使用,但我收到了违反 Elements must only use allowed ARIA attributes 的问题,说我的任何类型的收音机或带有 aria-required 的复选框的输入都不允许使用“aria-required”。

这与该工具是否存在差异,所需的 HTML5 工作方式是否略有不同,或者收音机或复选框实际上不允许使用 aria-required?

【问题讨论】:

单选按钮很简单。将它们放在一个容器元素中,并赋予容器元素一个“radiogroup”的角色。将 aria-required 属性添加到同一容器元素。复选框,不,不允许。不知道为什么。 对于复选框,无论是否选中,都会通过表单传递值。如果您想传达用户必须选中复选框才能继续/提交,那么应该通过指向文本容器的 aria- describeby 属性(通过该容器的 ID 属性)关联此类消息。 【参考方案1】:

如wai-aria documentation 中所示,aria-required 可用于radiogroup 元素。

您可以设置fieldset(具有相应的aria-required 属性)。

 <fieldset aria-required="true">
    <legend>Do you like ARIA? (mandatory question)</legend>
    <input type="radio" name="answer" required="required" value="Yes"/>
    <input type="radio" name="answer" required="required" value="No"/>
 </fieldset>

请注意,您必须同时设置aria-requiredrequired 属性,并明确指出该字段是必填字段。

如果您没有使用正确的 HTML 输入,您也可以使用 &lt;div role=radiogroup&gt;(请参阅下面的评论)

【讨论】:

根据 HTML 建议,radiogroup 不是 fieldset 元素的允许角色。 w3.org/TR/html52/sec-forms.html#elementdef-fieldset 这里不需要radiogroup 角色。 radiogroup 角色的目的是以编程方式指定哪些收音机属于哪个单选按钮组,以便浏览器可以正确构建可访问性树。当收音机不是正确的 HTML 输入时,这是必要的。但是对于 HTML &lt;input type="radio" name="foo"&gt;,单选按钮组是根据 name 属性计算的。 @andrewmacpherson 你是对的,但很快就会改变github.com/w3c/html-aria/commit/…

以上是关于单选按钮或复选框是不是允许使用 aria-required?的主要内容,如果未能解决你的问题,请参考以下文章

单击单选按钮或复选框时表单滚动到顶部

如何在 swift (iOS) 中创建单选按钮和复选框?

使用复选框而不是单选按钮来控制传单图层?

基于复选框选择的多个动态单选按钮

如何在引导表中设置单选按钮或复选框的样式?

使用easyui框架form控件,单选按钮radio或复选框checkbox样式问题