嵌套的字段集

时间:2011-04-16 20:34:43

标签: html semantics

编辑:Downvotes迫使我重新提出这个问题。

使用字段集表示子部分在语义上是否正确?

= Basic Info =
   First Name: ________
    Last Name: ________

= Address =
Business Name: ________
      Streeet: ________
         City: ________

您如何处理嵌套表单部分? 没有更好的方法,默认情况下看起来还可以吗?

3 个答案:

答案 0 :(得分:18)

是的,它在语义上是正确的。

答案 1 :(得分:15)

你基本上问了两个问题:

如果它在语义上正确你的例子,并且你可以嵌套fielset元素。

这里给出的一些答案是错误的。

它在语法上是正确的,但在语义上不正确,您可以嵌套字段集元素。

由于表单不是表示元素,因此它在语义上不正确。表用于显示行和列中的信息,而您显然没有这样做。表格不是制作好表格的道具,这就是你使用它的方式。

接下来可能会有一些建议。

引用HTML5标准,我引用了提案文档:“表单的每个部分都被视为段落,通常使用p元素与其他部分分开。”

http://dev.w3.org/html5/spec/single-page.htm 第4.10节

http://dev.w3.org/html5/spec-LC/forms.html

也应该回答嵌套问题。

我想这个问题来自于知道如何分割表单内容的愿望。答案是使用字段集。表单本身有一个含义,所以“是”,它将是一个包含所有表单元素的字段集(并且可能被禁用)。

回到你的例子,你将有一个“注册”的字段集和按嵌套字段集分组的注册部分,因为你的例子中的一个这样的部分是“地址”。

制作表单的“更好”方式......这取决于我认为这是另一个问题,在HTML5准备就绪并在所有浏览器中正确实施之前,这个问题仍将继续讨论。

答案 2 :(得分:4)

是的,有一个嵌套in the specs的例子。

<fieldset name="clubfields" disabled>
 <legend> <label>
  <input type=checkbox name=club onchange="form.clubfields.disabled = !checked">
  Use Club Card
 </label> </legend>
 <p><label>Name on card: <input name=clubname required></label></p>
 <fieldset name="numfields">
  <legend> <label>
   <input type=radio checked name=clubtype onchange="form.numfields.disabled = !checked">
   My card has numbers on it
  </label> </legend>
  <p><label>Card number: <input name=clubnum required pattern="[-0-9]+"></label></p>
 </fieldset>
 <fieldset name="letfields" disabled>
  <legend> <label>
   <input type=radio name=clubtype onchange="form.letfields.disabled = !checked">
   My card has letters on it
  </label> </legend>
  <p><label>Card code: <input name=clublet required pattern="[A-Za-z]+"></label></p>
 </fieldset>
</fieldset>