正确的HTML表单标记

正确的HTML表单标记,html,forms,twitter-bootstrap,zurb-foundation,Html,Forms,Twitter Bootstrap,Zurb Foundation,我们正在进行讨论,因为我目前正在修复一个IE7 bug,因为和标记被包装在中 我似乎找不到任何文档来说明标记中包含的标记的正确语义。我倾向于使用下面的例子 <form action="" method="post"> <fieldset> <div class="formrow"> <label for="firstname">Firstname:</label> <input type="te

我们正在进行讨论,因为我目前正在修复一个IE7 bug,因为
标记被包装在

我似乎找不到任何文档来说明
标记中包含的标记的正确语义。我倾向于使用下面的例子

<form action="" method="post">
  <fieldset>
    <div class="formrow">
      <label for="firstname">Firstname:</label>
      <input type="text" id="firstname" name="firstname" />
    </div>
  </fieldset>
</form>

名字:
然而,看看它们没有包装任何元素,也许是为了风格,但是对于
收音机
复选框
,它们将
放在
中,我认为这是无效的。虽然Zurb页面使用的是HTML5,那么它在那里是否有效

该方法倾向于采用与我类似的双包装
方法。但同样,它们也将
收音机
复选框
输入包装在标签内


因此,对于我的问题,
标记中元素的语义是否有明确的规则?

如果您想知道哪些元素可以是表单元素的后代,我建议您查看一下(或查看等效项)

例如:



输入
元素位于其
标签
元素内的原因是,单击描述性文本也会切换复选框的状态。好的,您可以通过正确设置属性的来实现同样的效果。

您应该按照如下所述使用它: 例如:

或者,您可以将输入字段的“描述”包装到

<label>

元素

<label for="name_of_inputfield">Name:</label>
名称:
请注意,利用

<legend>

如果您正在使用

<fieldset>

示例标记是无效的XHTML 1.0,因为fieldset元素不包含所需的图例元素。在HTML5中,这是正确的,但不允许使用action=”“属性(action属性值不能为空)

但在实践中,字段集标记是毫无意义的。元素对字段分组很有用,但示例中不包含组外的字段。div标记也是多余的,尽管XHTML1.0严格的规则要求它。但可能真正的形式是不同的。如果您有几个“行”,正如类名“formrow”所示,那么表元素很可能是最佳标记

在容器元素中封装字段和她的标签有三个原因:满足HTML4.01严格和XHTML1.0严格规则(要求表单中的任何内容都封装在块级容器中),可以将它们作为一个整体进行样式设置,并且更容易在客户端脚本中将它们作为一个单元来处理。对于这样的包装

  • div是一个语义空的元素,通常很方便
  • 字段集可能是逻辑的,但根据旧规则需要图例,并且默认情况下会创建一种特殊的边框
  • 根据HTML5规则(对段落的概念进行了自由的解释),p是可以接受的,但与div相比,它几乎不会赢得任何东西。相反,它可能意味着默认的顶部和底部边距太大
。而且表单可以包含(%block),所以我想您可以使用任何东西!谢谢
<fieldset>