Answers:
该<label>
标签可让您单击标签,它会像点击相关的输入元素上进行处理。有两种创建此关联的方法:
一种方法是将label元素包装在input元素周围:
<label>Input here:
<input type='text' name='theinput' id='theinput'>
</label>
另一种方法是使用for
属性,为它提供关联输入的ID:
<label for="theinput">Input here:</label>
<input type='text' name='whatever' id='theinput'>
这对于与复选框和按钮一起使用特别有用,因为这意味着您可以通过单击关联的文本来选中该框,而不必自己点击该框。
在MDN中阅读有关此元素的更多信息。
select
only 相关联的标签会将焦点放在选择上,而不是扩展选项。
该for
属性将标签与控件元素相关联,如label
HTML 4.01规范的描述中所定义。除其他外,这意味着,当label
元素获得焦点时(例如,通过单击),它将把焦点传递给其关联的控件。标签和控件之间的关联也可以由基于语音的用户代理使用,当处理控件时,基于语音的用户代理可以为用户提供一种询问相关标签是什么的方式。(这种关联可能不像在视觉渲染中那样明显。)
在问题的第一个示例中(不带for
),label
标记的使用没有逻辑或功能上的含义–它是没有用的,除非您使用CSS或JavaScript对其进行了处理。
HTML规范没有强制要求将标签与控件关联,但是Web内容可访问性指南(WCAG)2.0确实如此。在技术文档H44:使用标签元素将文本标签与表单控件相关联中对此进行了描述,该文档还解释了隐式关联(通过嵌套,例如input
inside label
)不如通过for
和id
属性的显式关联得到广泛支持,
简而言之,它所做的就是引用id
输入的,仅此而已:
<label for="the-id-of-the-input">Input here:</label>
<input type="text" name="the-name-of-input" id="the-id-of-the-input">
<label>
标签的for属性应等于相关元素的id属性,以将它们绑定在一起。
for属性显示此标签代表相关的输入字段,复选框或单选按钮或与之关联的任何其他数据输入字段。例如
<li>
<label>{translate:blindcopy}</label>
<a class="" href="#" title="{translate:savetemplate}" onclick="" ><i class="fa fa-list" class="button" ></i></a>  
<input type="text" id="BlindCopy" name="BlindCopy" class="splitblindcopy" />
</li>
它标记任何输入是该for
属性的参数。
<input id='myInput' type='radio'>
<label for='myInput'>My 1st Radio Label</label>
<br>
<input id='input2' type='radio'>
<label for='input2'>My 2nd Radio Label</label>
<br>
<input id='input3' type='radio'>
<label for='input3'>My 3rd Radio Label</label>