-1

我有一个 PHP 脚本,它生成一个表格,每行(据说)作为一个表格。该表生成得非常好,但由于某种原因,表单标签立即关闭。我不知道为什么,这让我很生气。有任何想法吗?

echo '
 <form method="post" action="#" id="status_row_'.$row["name"].'">
 <tr class="even">
      <input type="hidden" name="category" id="category" value="'.$category[0]['category'].'">
      <input type="hidden" name="error_level" id="error_level" value="'.$row['level'].'">
      <input type="hidden" name="service_name" id="service_name" value="'.$row['name'].'">
      <td class="status-icons" name="error_circle"><div class="'.$error_circle.'"></div></td>
          //rows deleted here for clarity's sake
                                    </tr></form>'

所以生成的表单上的 Inspect Element 显示:<form method="post" action="#" id="status_row_blahblah"></form>后跟所有行。

4

4 回答 4

5

你的html坏了。您试图在打开后立即打开表单<tr>,然后在关闭后关闭它<tr>。那是非法的html。<table>不能像那样建造结构。它可能应该更像

<form>
<table>
<tr>
   <td>...</td>
</tr>
</table>
</form>

本质上,您是在尝试将表单填充到标签之间存在的空白<tr><td>。除了表结构之外,什么都不应该存在:

<tr><p>hi there</p><td>go away</td></tr>

是非法的,大多数浏览器将呈现<p>OUTSIDE 表,通常在开始<table>标记之前。这就是为什么您的表单显示在它所在的位置的原因 - 浏览器正在尝试使用您损坏的 html 尽其所能。

于 2013-07-30T21:42:14.967 回答
1

形式不同吗?或者以某种方式链接在一起(即每个表格行是它自己的唯一表格,还是一个巨大的表格,每行都有不同的字段?

如果是前者,则在每个 ROW 元素中创建一个表单,如下所示:

<table>
    <tr>
       <td><form>FORM STUFF GOES HERE</FORM></td>
    </tr>
    <tr>
       <td><form>FORM STUFF GOES HERE</FORM></td>
    </tr>
    <tr>
       <td><form>FORM STUFF GOES HERE</FORM></td>
    </tr>
</table>

如果是后者,或者您只希望整体提交一个表单,则在表格外部创建表单标签,并在数据单元格中包含表单字段:

<form>
<table>
    <tr>
        <td>FORM FIELD E.G. TEXT FIELD</td>
    </tr>
    <tr>
        <td>FORM FIELD E.G. TEXT FIELD</td>
    </tr>
    <tr>
        <td>FORM FIELD E.G. TEXT FIELD</td>
    </tr>
</table>
</form>
于 2013-07-30T22:21:39.733 回答
0

看起来您正在关闭<tr>标签之前关闭<form>标签。

于 2013-07-30T21:42:26.090 回答
0

表单元素关闭不正确,因为正如某些人指出的那样,您显然不能在<form>标签之间放置<tr>标签<td>(我不明白为什么,但它就是这样)。

我发现这个解决方案是一种解决方法:

http://federmanscripts.com/2010/01/12/form-and-table-row-nesting-workaround/

于 2013-07-31T19:16:31.190 回答