表单标记不会将元素括在表中

时间:2011-07-07 19:21:41

标签: html forms html-table semantics

我遇到了一个奇怪的问题;我在<tr>中有一个表单,但表单拒绝在其中包装任何标签。我做了一个快速的JSFiddle here来玩。 Firebug报告表格没有包装任何内容:

enter image description here

<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在写入的标记中保存了两个trI read here这是无效的,所以我的问题是我可以在表格中创建一个包含两个或更多tr个和任意数量的其他元素的表单吗?表格其中的其他行与表单没有关联,因此在整个表中放置一个<form>是没有用的,尽管看到其他行没有表单的任何输入(POST请求),我想一个{可以在整个表格中放置{1}}。

哪种解决方案更好;整个表格换行,或者只是用form标记括起所需行的工作修正?我知道我可以在form内放一个table,但是嵌套表中的列宽不一样,这就是我提出这个问题的原因。

3 个答案:

答案 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;