14

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>

Chrome 和 IE8 都关注点击World时间Label,Firefox 没有。哪个是对的?

4

4 回答 4

10

根据W3C,它适用于表单控件,表单控件定义为

  • 纽扣
  • 复选框
  • 单选按钮
  • 菜单
  • 文字输入
  • 文件选择
  • 隐藏控件
  • 对象标签

因此,FireFox 在技术上是正确的,尽管如果浏览器不将其限制为这些元素,我几乎不会认为它是“破坏性的”。

于 2009-07-07T19:44:05.810 回答
5

HTML 规范说,关于label的“for”属性,“当存在时,此属性的值必须与同一文档中某些其他控件的 id 属性的值相同。当不存在时,定义的标签是与元素的内容相关联。”

所以“for”中的 id 引用应该是控件的引用。什么是控制?规范基本上说 anyinput是一个控件,就像button, select, or一样object。所以 Firefox 在技术上是正确的—— adiv不是控件。

于 2009-07-07T19:42:59.570 回答
1

我会说这不是对标记的适当使用,因为标签语义是它们专门用于控件。

LABEL 元素用于为没有隐式标签的控件指定标签,

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

于 2009-07-07T19:42:33.143 回答
1

最新的 WhatWG 规范有这样的说法:

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

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

...

for可以指定该属性以指示与标题关联的表单控件。如果指定了属性,则属性的值必须是与该元素位于同一树中的可标记元素的 ID label

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

换句话说,该标准只允许for属性指向上面列出的 7 种标记类型之一的元素。因此,在当前规范下,问题中展示的 HTML(它使用for元素指向可编辑的)在技术上是无效的 HTML。div

Nu Html Checker(由WhatWG 认可)同意;如果您要求它验证问题中的 HTML 文档,它会说:

错误:元素的for属性值label必须是非隐藏表单控件的ID。

于 2018-10-31T11:42:25.460 回答