我可以使用标签作为标签吗?

时间:2013-08-30 15:23:39

标签: javascript html

通常我使用label标签来指向这样的输入标签

<label for='firstname'>First Name:</label>
<input type='text' id='firstname' />

现在我有了这个

<label for='firstname'>First Name:</label>
<label id='firstname'></label>

由于我以前没有这样做过,所以label可能会有label标记。当我应用Javascript因为我必须更新值时它会起作用吗?或者这是一个有效的w3c合规性?

我很困惑是否使用它。

5 个答案:

答案 0 :(得分:6)

根据W3C验证器,它无效。

  

label元素的for属性必须引用表单控件。

答案 1 :(得分:4)

没有。标签元素标签(主要是)表单控件(<input><button>等),而不是任意元素。

请参阅the HTML specification

  

某些元素(并非所有元素都与形式相关)被归类为可标记元素。这些元素可以与标签元素相关联。

     

buttoninput(如果type属性未处于隐藏状态),keygenmeteroutputprogressselecttextarea

答案 2 :(得分:2)

正如其他人已经回答的那样,label元素必须引用一个控件,例如input,因此它不能引用另一个label元素,即使是语法上也是如此。即使在HTML5中也存在此限制。

这意味着如果您使用控件以外的元素读取用户输入,您仍然可以为它们使用标签,但不得对标签使用label标记。通常,最好使用input type=text读取名称等文本数据。如果您出于某种原因无法使用它或其他控件,那么ARIA规范中建议的方法是语义中性元素,通常是span,并使用ARIA属性aria-labelledby来指定之间的连接标签和span。例如:

<span id=firstnameLabel>First Name:</span>
<span role=textbox id=firstname aria-labelledby=firstnameLabel></span>

ARIA属性主要用于辅助或其他可访问性感知软件。它们可能被主流浏览器忽略了。

答案 3 :(得分:0)

标签的标签不符合要求。可能HTML5 output element你想要的是什么?

答案 4 :(得分:0)

Label“For”属性必须指向“control”元素的有效ID属性,http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.2将有效控件元素列为 按钮,复选框,单选按钮,菜单,文件选择,隐藏控件,对象控件。

它可能在JS中有效,但它将是无效的HTML