我遇到了一个奇怪的问题;我在<tr>
中有一个表单,但表单拒绝在其中包装任何标签。我做了一个快速的JSFiddle here来玩。 Firebug报告表格没有包装任何内容:
<form>
元素显示为灰色且未包装任何内容。此测试的HTML在
<table>
<form>
<tr>
<td>Input</td>
<td>Another input</td>
</tr>
<tr>
<td colspan="4"><span>Other stuff</span></td>
</tr>
</form>
<tr>
<td>
Rows not affected by the form
</td>
</tr>
<tr>
<td>
Rows not affected by the form
</td>
</tr>
</table>
可以看出,form
在写入的标记中保存了两个tr
。 I read here这是无效的,所以我的问题是我可以在表格中创建一个包含两个或更多tr
个和任意数量的其他元素的表单吗?表格其中的其他行与表单没有关联,因此在整个表中放置一个<form>
是没有用的,尽管看到其他行没有表单的任何输入(POST请求),我想一个{可以在整个表格中放置{1}}。
哪种解决方案更好;整个表格换行,或者只是用form
标记括起所需行的工作修正?我知道我可以在form
内放一个table
,但是嵌套表中的列宽不一样,这就是我提出这个问题的原因。
答案 0 :(得分:18)
除了<table>
,<thead>
,<tfoot>
,<tbody>
,<tr>
或{{{{}}之外的任何标记,您都无法中断<th>
结构1}}。您需要将表单标记封装在两个<td>
之间,或者将整个<td>
需要放在<table>
标记中。
<form>
.. ..或
<table>
<tr>
<td>
<form>
...form data...
</form>
</td>
</tr>
</table>
答案 1 :(得分:3)
你只能在td中放入一个表单,所以你可以将这两行放在你在td内创建的新表中 喜欢......
<table><tr><td><form><table><tr>...</tr><tr>...</tr></table></form></td></tr><tr>...</tr><tr>...</tr></table>
答案 2 :(得分:1)
在这种情况下,<form>
标记只能放在<td>
元素内或<table>
之外。
如果我是你,我会把<form>
放在整个桌子上,因为你说它里面没有任何其他形式。
或者,您可以使用<table>
完全替换<div>
,而使用display: table;
或display: table-cell;
。