3

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

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

现在我有这个

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

由于我以前没有遇到过这样的事情,是否可以labellabel. 当我Javascript因为必须更新值而申请时,它会起作用吗?或者这是一个有效的 w3c 合规性?

我很困惑是否使用它。

4

5 回答 5

6

根据 W3C 验证器,它是无效的。

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

于 2013-08-30T15:27:07.213 回答
4

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

请参阅HTML 规范

一些元素(并非所有元素都与表单相关)被归类为可标记元素。这些是可以与标签元素相关联的元素。

button, input(如果类型属性不处于隐藏状态), keygen, meter, output, progress, select,textarea

于 2013-08-30T15:26:47.790 回答
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 属性主要用于辅助或其他可访问性感知软件。主流浏览器可能会忽略它们。

于 2013-08-30T20:19:25.010 回答
0

标签的标签不合格。可能HTML5output元素是你想要的?

于 2013-08-30T15:29:51.097 回答
0

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

它可能在 JS 中工作,但它会是无效的 HTML

于 2013-08-30T15:30:06.117 回答