为什么label元素具有表单属性?

时间:2014-05-20 16:10:04

标签: html html5 forms

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

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

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

<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>

1 个答案:

答案 0 :(得分:1)

正如MDN所述:

  

表单(HTML5)与label元素关联的表单元素   (其形式所有者)。属性的值必须是a的ID   同一文件中的元素。如果未指定此属性,则为此    element必须是元素的后代。 :此   使用属性可以将标签元素放在a中的任何位置   文档,而不仅仅是其表单元素的后代。

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