你能使用合法的HTML制作一个表格的一部分吗?

时间:2010-08-18 23:43:51

标签: html

我尝试在HTML validator中输入以下内容,但即使我使用“验证HTML片段”选项也无法验证:

<table>
  <form action="foo">
    <tr>
      <td>tables + forms = BOOM</td>
    </tr>
  </form>
</table>

我认为我在这里要做的很清楚,但验证人似乎告诉我这是不允许的:(。

如果我想要一个表包含多个表单怎么办?我想有很多可能性如何将a分成几种形式,但至少允许tr和/或tbody成为形式的孩子似乎是合理的。

使用单独的表不会产生相同的效果,因为列宽可能不会相同。

3 个答案:

答案 0 :(得分:2)

如您所见,<form>元素只能完全出现在表格单元格(<td>)中,或完全封装<table>。你无法以任何其他方式验证; the HTML DTDs全部禁止将非表格元素作为<table><tr>中的第一级子元素。

也就是说,即使你没有验证,大多数浏览器也会理解你要做的事情。

答案 1 :(得分:1)

不幸的是,HTML4指定您不能直接在<form>内添加<table>,但您可以将表单作为<td>的子项,也许可以尝试使用:

<table>
  <tr>
    <td>
      <form action="foo">
        td + form = SUCCESS!
      </form>
    </td>
  </tr>
</table>

(在HTML5中仍然如此,其中<th>可能只包含phrasing elements,而<form>则归类为flow element。)

答案 2 :(得分:1)

看看,例如here在每种类型的元素可以包含的列表中。

表格很挑剔:它们只能包含caption?, ( col* | colgroup* ), (( thead?, tfoot?, tbody+ ) | ( tr+ ))

表单是“阻止内容”,因此您可以将其放在内容可以是“阻止”的任何位置,其中包括内容可以是“流”的任何位置,其中包括内部表格单元格:因此您可以将表单放入TD。