W3Schools有这样说 标签:

<label> 标签的定义的标签一个 输入 元素。 [着重部分由作者标明地雷]

这是否意味着以下HTML是无效的?

<!doctype html>
<html>
    <head>
         <title>Example document</title>
    </head>
    <body>
        <label for="x">Label</label> 
        <hr>
        <div id="q" contentEditable="true">Hello</div>
        <hr>
        <div id="x" contentEditable="true">World</div>
    </body>
</html>

两铬和IE8得到重点 WorldLabel 点击,火狐不。这是正确的?

有帮助吗?

解决方案

根据 W3C 它适用于形式的控制,并形成控制 定义为:

  • 按钮
  • 无线电按钮
  • 菜单
  • 文本输入
  • 文件选择
  • 隐藏的控制
  • 目标签

那FireFox在技术上是正确的,虽然我几乎不认为这是"打破"如果一浏览器,并不限制它对那些要素。

其他提示

在HTML规范说,约label的“对”的属性,“当存在时,该属性的值必须是相同的同一文档中的一些其他控制的id属性的值,当不存在时,标签被定义与所述元素的内容相关联的“。

所以在ID的引用“为”应该是一个控制的。什么是控制?该规范基本上说,任何input是控制,是buttonselect,或object。所以Firefox是技术上右 - 一个div不是控制

我会说这是不恰当的使用的标记的,因为标签的语义是它们是专为对照。

  

在LABEL元件用于指定   标签不具有控制   隐式标签,

http://www.w3.org /TR/html401/interact/forms.html#h-17.9.1

最新一份规范已经这样说的:

一些元素,不是所有形式相关的,被归类为labelable要素。这些元素可以与标签元素。

  • button, input (如果的 type 属性是不是在隐藏的状态), meter, output, progress, select, textarea

...

for 属性可以指定,以指示的形式控制带有其标题是相关联。如果属性是指定的,属性是值必须ID labelable件在同一棵树的 label 元素。

(资料来源: https://html.spec.whatwg.org/multipage/forms.html.)

换句话说,该标准仅允许 for 属性的要点,在要件7个标记种类列出上述。HTML展出的问题(即采用一个 for 元点对可编辑 div)是因技术上无效HTML根据目前的规格。

Nu Html检查 (这是 核可过份)同意;如果你问到验证HTML文档从的问题,它说:

错误:值 for 属性的 label 元素必须ID的一个非隐形式的控制。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top