通常我使用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合规性?
我很困惑是否使用它。
答案 0 :(得分:6)
根据W3C验证器,它无效。
label元素的
for
属性必须引用表单控件。
答案 1 :(得分:4)
没有。标签元素标签(主要是)表单控件(<input>
,<button>
等),而不是任意元素。
某些元素(并非所有元素都与形式相关)被归类为可标记元素。这些元素可以与标签元素相关联。
button
,input
(如果type属性未处于隐藏状态),keygen
,meter
,output
,progress
,select
,textarea
答案 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