【问题标题】:Why does the label element have a form attribute?为什么label元素有form属性?
【发布时间】:2014-05-20 16:10:04
【问题描述】:

在 HTML 标准中,为什么 HTML label 元素已经定义了 form 属性,而它已经具有 for 属性?它有什么目的?

如果我有一个标签元素,其中子内容是输入类型或使用了for 属性,form 属性有什么用途?

例如,在每个label 场景中,通过查看子元素或父元素可以知道“拥有表单”。是否存在另一种情况,即带有form 属性的label 既有用又不会增加混乱?

<body>
<form action="#" id="form-one" method="post">
    <label>Dog name<input type="text" id="tb-dog-name"></label>
    <button type="submit" id="form-one-submit">Post Dog Name</button>
</form>

<form action="#" id="form-two" method="post">
    <label for="tb-cat-name">Cat name</label>
    <input type="text" id="text-box-two">
    <button type="submit" id="form-two-submit">Post Cat Name</button>
</form>

<label for="tb-pizza">How much do you like pizza?</label>
<input type="text" id="tb-pizza" form="form-three">
<form action="#" id="form-three" method="post">
    <button type="submit" id="form-three-submit">Share your love!</button>
</form>

</body>

【问题讨论】:

  • @j08691 w3.org/TR/html-markup/label.html#label.attrs.form 我不知道它是干什么用的……
  • @WesleyMurch - HTML5 中的新功能。
  • 我的意思是,我用了 2 秒的时间谷歌了它:impressivewebs.com/html5-form-attribute
  • @WesleyMurch — 讨论表单控件的表单属性(如输入),而不是标签。
  • @Quentin 啊,是的,我明白了。老实说,这似乎真的很粗略,永远不会使用。当您不知道自己在做什么时,这似乎是一种惹麻烦的好方法。

标签: html forms


【解决方案1】:

正如MDN 所说:

form (HTML5) 标签元素关联的表单元素 (它的表单所有者)。属性的值必须是一个 ID 同一文档中的元素。如果未指定此属性,则此 element 必须是元素的后代。 这个 属性使您可以将标签元素放置在 文档,而不仅仅是其表单元素的后代。

Additionally: 默认情况下,与表单关联的元素(按钮 fieldset 输入 keygen 标签对象输出 select textarea img)与其最近的祖先表单元素相关联(如下所述),但是,如果它是可重新关联的(按钮fieldset input keygen label object output select textarea),可能有一个指定的表单属性来覆盖它。

【讨论】:

  • 我仍然没有真正了解实际用途。你能想到任何吗?我猜只是边缘情况?这是一个奇怪的。
  • 似乎它释放了标签元素以出现在 DOM 中的任何位置,而不是作为表单的后代。有用?嗯。
  • 是的,非常好。不过很有趣。仍然不确定它有什么意义,因为for 无论如何都应该是独一无二的,对吧?我的意思是,不应该有两个元素具有相同的 id(for 的值)。
  • 但这不就是for属性的目的吗?
  • 我仍然不明白为什么通过设置for="id_of_input_in_some_other_form" 不能实现这一点。为什么标签会与表单控件所属的表单不同?
猜你喜欢
  • 2011-11-01
  • 1970-01-01
  • 2015-03-13
  • 2015-05-28
  • 1970-01-01
  • 2012-10-05
  • 2016-06-19
  • 2020-01-21
相关资源
最近更新 更多