49

标签是否label适用于单选按钮?如果是这样,你如何使用它?我有一个显示如下的表单:

First Name: (text field)
Hair Color: (color drop-down)
Description: (text area)
Salutation: (radio buttons for Mr., Mrs., Miss)

我想使用label左列中每个标签的标记来定义其与右列中相应控件的连接。但是如果我使用单选按钮,规范似乎表明表单控件的实际“Salutation”标签突然不再属于label标签,而是选项“先生,夫人等”。进入label标签。

我一直是可访问性和语义网络的粉丝,但这种设计对我来说没有意义。label标签明确声明标签。option标签选择选项。您如何label在一组单选按钮的实际标签上声明 a ?

更新: 这是一个带有代码的示例:

<tr><th><label for"sc">Status:</label></th>
    <td>&#160;</td>
    <td><select name="statusCode" id="sc">
            <option value="ON_TIME">On Time</option>
            <option value="LATE">Late</option>
        </select></td></tr>

这很好用。但与其他表单控件不同的是,单选按钮的每个值都有一个单独的字段:

<tr><th align="right"><label for="???">Activity:</label></th>
    <td>&#160;</td>
    <td align="left"><input type="radio" name="es" value="" id="es0" /> Active &#160;
        <input type="radio" name="es" value="ON_TIME" checked="checked" id="es1" /> Completed on Time &#160;
        <input type="radio" name="es" value="LATE" id="es2" /> Completed Late &#160;
        <input type="radio" name="es" value="CANCELED" id="es3" /> Canceled</td>
</tr>

该怎么办?

4

7 回答 7

58

标签标签是否适用于单选按钮?

是的

如果是这样,你如何使用它?

与任何其他表单控件相同的方式。

您可以给它一个与控件for匹配的属性id,或者将控件放在标签元素中。

我想为左列中的每个标签使用标签标签

标签用于控件,而不是一组控件。

如果要为一组控件添加标题,请使用 a<fieldset>和 a <legend>(并为<label>集合中的每个控件提供 a)。

<fieldset>
  <legend> Salutation </legend>
  <label> <input type="radio" name="salutation" value="Mr."> Mr. </label>
  <label> <input type="radio" name="salutation" value="Mrs."> Mrs. </label>
  <!-- etc -->
</fieldset>
于 2012-11-07T16:22:42.467 回答
23

是啊。这是它的工作原理。

<label>标记各个字段,因此每个字段<input type="radio">都有自己的<label>

要标记一字段(例如,共享相同的几个单选按钮name),您可以使用<fieldset>带有<legend>元素的标签。

<fieldset>
    <legend>Salutation</legend>

    <label for="salutation_mr">Mr <input id="salutation_mr" name="salutation" type="radio" value="mr"><label>

    <label for="salutation_mrs">Mrs <input id="salutation_mrs" name="salutation" type="radio" value="mrs"><label>

    <label for="salutation_miss">Miss <input id="salutation_miss" name="salutation" type="radio" value="miss"><label>

    <label for="salutation_ms">Ms <input id="salutation_miss" name="salutation" type="radio" value="ms"><label>
</fieldset>
于 2012-11-07T16:25:55.050 回答
7

您可以使用aria-role="radiogroup"来关联控件,而无需使用<fieldset>. 这是WCAG 2.0 建议的技术之一

<div role="radiogroup" aria-labelledby="profession_label" aria-describedby="profession_help">
  <p id="profession_label">What is your profession?</p>
  <p id="profession_help">If dual-classed, selected your highest leveled class</p>
  <label><input name="profession" type="radio" value="fighter"> Fighter</label>
  <label><input name="profession" type="radio" value="mage"> Mage</label>
  <label><input name="profession" type="radio" value="cleric"> Cleric</label>
  <label><input name="profession" type="radio" value="theif"> Thief</label>
</div>

但是,我注意到使用这种技术 WebAim Wave 工具会发出有关缺失的警告<fieldset>,所以我不确定 AT 对此的支持是什么样的。

于 2017-08-14T14:44:00.347 回答
2

您不能为一组按钮声明一个标签,而是为每个按钮声明一个标签。在这种情况下,标签是“先生”、“夫人”。和“小姐”,而不是“问候”。

更新
也许你应该为你的这个“标签”使用另一个标签 - 因为它不是真正的标签。

<tr>
    <th align="right" scope="row"><span class="label">Activity:</span></th>
    <td>&#160;</td>
    <td align="left"><label><input type="radio" name="es" value="" id="es0" /> Active &#160;</label>
    [... and so on]
</tr>
于 2012-11-07T16:24:04.310 回答
2

我对主题的 2 美分,或者更确切地说是一个侧节点(它不使用隐式关联能够放置在任何地方,而是链接)分组name属性完成,并由属性链接id

<ol>
    <li>
        <input type="radio" name="faqList" id="faqListItem1" checked />
        <div>
            <label for="faqListItem1">i 1</label>
        </div>
    </li>
    <li>
        <input type="radio" name="faqList" id="faqListItem2" />
        <div>
            <label for="faqListItem2">i 2</label>
        </div>
    </li>
    <li>
        <input type="radio" name="faqList" id="faqListItem3" />
        <div>
            <label for="faqListItem3">i 3</label>
        </div>
    </li>
</ol>

于 2017-08-20T23:03:18.670 回答
1

回答您的问题:不,您不能将 Salutation 连接到单选按钮之一。如果您单击“称呼”,则将选择其中一个选项是没有意义的。相反,您可以给 Mr、Mrs 和 Miss 他们自己的标签,因此如果有人单击其中一个词,则会选择相应的单选按钮。

<input id="salutation_mr" type="radio" value="mr" name="salutation">
<label for="salutation_mr">Mr.</label>
<input id="salutation_mrs" type="radio" value="mrs" name="salutation">
<label for="salutation_mrs">Mrs.</label>
<input id="salutation_miss" type="radio" value="miss" name="salutation">
<label for="salutation_miss">Miss</label>

我确实认为您仍然可以将 Salutation 包装在<label>元素中,只是不能使用该for属性。我的立场是正确的,请参阅下面的评论。尽管在技术上是可行的,但这并不是它的<label>本意。

于 2012-11-07T16:25:40.760 回答
0

标签的“for”属性对应于单选按钮 ID。所以...

<label for="thisRad">Radio Button 1</label>
<input type="radio" id="thisRad" />

希望能帮助到你。

你会希望你的看起来像这样......

Salutation<br />
<label for="radMr">Mr.</label><input type="radio" id="radMr" />
<label for="radMrs">Mrs.</label><input type="radio" id="radMrs" />
<label for="radMiss">Miss.</label><input type="radio" id="radMiss" />
于 2012-11-07T16:23:02.983 回答