在单选按钮上使用“label for”

Posted

技术标签:

【中文标题】在单选按钮上使用“label for”【英文标题】:Using "label for" on radio buttons 【发布时间】:2010-12-04 09:43:05 【问题描述】:

参数时,为508 compliant*,以下是否正确?

 <label for="button one"><input type="radio" name="group1" id="r1" value="1" /> button one</label> 

还是这个?

 <input type="radio" name="group1" id="r1" value="1" /><label for="button one"> button one</label>

我问的原因是,在第二个示例中,“标签”仅包含文本,而不包含实际的单选按钮。

*1973 年《康复法案》第 508 条要求联邦机构向残障人士提供软件和网站可访问性。

【问题讨论】:

【参考方案1】:

你几乎明白了。应该是这样的:

<input type="radio" name="group1" id="r1" value="1" />
<label for="r1"> button one</label>

for 中的值应该是您要标记的元素的 id。

【讨论】:

你的回答当然是对的,但玛莎有正确的答案。 Martha 的两个示例都是完全有效的 html5。例如,如果您希望整个事物都在一个框架中,则使用 css 设置第二个框架会更容易。如果您希望标签位于其他位置,请使用第一个。但两者都可以。最好的问候! 嗯..如何让一个标签在两个单选按钮之间切换?你不能有两个相同的 ID...:/ @NilsSens 每个收音机和标签对都应该有唯一的 ID,它们绝不应该共享 ID @NilsSens 在 2 个单选按钮之间切换,它们只有 1 个标签?这听起来像是一个使用复选框的明确案例:D 啊,不是我的意思是一个切换单选按钮的超级标签。喜欢:最喜欢的水果类别,当您单击该类别时,您会在 idk "banana" 和 "strawberry" 之间切换因为,当您可以切换选项时,为什么要强制执行鼠标移动 UX。今天,我会使用 JS 来手动编写代码,但如果有一个 CSS 唯一的方法会很有趣:)【参考方案2】:

任一结构均有效且可访问,但for 属性应等于输入元素的id

<input type="radio" ... id="r1" /><label for="r1">button text</label>

<label for="r1"><input type="radio" ... id="r1" />button text</label>

for 属性在第二个版本中是可选的(包含输入的标签),但 IIRC 有一些较旧的浏览器不会使标签文本可点击,除非您包含它。第一个版本(输入后的标签)使用相邻的兄弟选择器+ 更容易使用 CSS 设置样式:

input[type="radio"]:checked+label font-weight:bold;

【讨论】:

是的,虽然在第二个示例中,“for”属性不是必需的。 我认为有些浏览器版本只有在使用 'for' 属性时才使按钮文本“可点击”,即将输入内容包装在标签内是不够的。 @Martha - 你知道哪些浏览器吗? @Kirkland - w3.org/TR/html401/interact/forms.html#h-17.9 似乎表明第二种形式是有效的,但有几个来源表明支持可能并不普遍。无论如何,最好提供for 属性。 @RalphDavidAbernathy 是的,同样的规则适用于复选框。【参考方案3】:

(首先阅读在&lt;label&gt;&lt;/label&gt; 标签中解释了for 的其他答案。 好吧,两个最佳答案都是正确的,但对于我的挑战,当您有多个单选框时,您应该为它们选择 一个通用名称,例如 name="r1" 但具有不同的 id id="r1_1" ... id="r1_2"

所以这样答案更清晰,也消除了名称和 ID 之间的冲突。

单选框的不同选项需要不同的 id。

<input type="radio" name="r1" id="r1_1" />

       <label for="r1_1">button text one</label>
       <br/>
       <input type="radio" name="r1" id="r1_2" />

       <label for="r1_2">button text two</label>
       <br/>
       <input type="radio" name="r1" id="r1_3" />

       <label for="r1_3">button text three</label>

【讨论】:

以上是关于在单选按钮上使用“label for”的主要内容,如果未能解决你的问题,请参考以下文章

.click() 在单选按钮上不起作用

如何使用 UIView 在单选按钮上制作多行标题

使用 javascript 在单选按钮列表上调用 onclick

如何在单选按钮上绑定数据

引导和反应,在单选按钮上分配 .active 类

在单选按钮上执行 onChange 函数