我有一个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>
后跟所有行。
答案 0 :(得分:4)
你的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>
显示在表外,通常在打开<table>
标记之前。这就是为什么你的表单出现在原来的位置 - 浏览器正试图用你破碎的html做到最好。
答案 1 :(得分: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>
答案 2 :(得分:0)
在关闭<tr>
代码之前,您似乎正在关闭<form>
代码。
答案 3 :(得分:0)
表单元素关闭不正确,因为正如有些人所指出的那样,你显然在<form>
和<tr>
标签之间没有<td>
个标签(我不明白为什么,但它就是这样。)
我发现这个解决方案是一种解决方法:
http://federmanscripts.com/2010/01/12/form-and-table-row-nesting-workaround/