动态HTML表格点击update后input输入框跳出表格错位如何解决
问题原因
- HTML表格结构不合法:
<tr>的直接子元素只能是<td>/<th>,你把<form>标签、隐藏<input>字段直接放在<tr>和<td>之间,不符合规范的元素会被浏览器自动移出表格,导致表单元素跑到表格上方触发错位。
- HTML表格结构不合法:
- 表单标签语法错误:
<form action="update.php method="POST"缺少action属性的闭合双引号,也没有标签本身的闭合>,会触发浏览器异常解析,加重结构混乱。
- 表单标签语法错误:
- 链接标签未闭合:非编辑状态下的Update链接
<a>标签缺少</a>闭合标记,也会干扰DOM结构渲染。
- 链接标签未闭合:非编辑状态下的Update链接
修正方案
调整核心渲染函数的代码,保证所有元素都放在<td>内部,同时修正语法错误即可,修改后的代码如下:
echo '<tr>'; echo '<td><b>' . ucfirst(htmlspecialchars($data)) . '</b></td>'; if($url_param_index[1] == $info) { echo '<td>'; // 修正form语法,添加唯一ID用于关联提交按钮 echo '<form action="update.php" method="POST" id="update_form_' . $gegevens_lid['lidnummer'] . '_' . $data . '">'; echo '<input type="text" name="' . $data . '" value="' . htmlspecialchars($info) . '">'; // 隐藏字段放在form内部(td内部) echo '<input type="hidden" name="lidnummer" value="' . htmlspecialchars($gegevens_lid['lidnummer']) . '">'; echo '</form>'; echo '</td>'; // 提交按钮通过form属性关联表单,放在td内 echo '<td><button type="submit" form="update_form_' . $gegevens_lid['lidnummer'] . '_' . $data . '">Save</button></td>'; echo '<td>----</td>'; } else { if($data == 'lidnummer' || $data == 'adres' || $data == 'woonplaats') { echo '<td>' . htmlspecialchars($info) . '</td>'; echo '<td> ---- </td>'; echo '<td> ---- </td>'; } else { echo '<td>' . htmlspecialchars($info) . '</td>'; // 补全a标签闭合 echo '<td><a href="lid.php?lidnummer=' . $gegevens_lid['lidnummer'] . '&' . $data . '=' . $info . '">Update</a></td>'; echo '<td> ---- </td>'; } } echo '</tr>';
补充说明
给所有输出到HTML的动态值加上htmlspecialchars()转义,可避免XSS漏洞,同时避免值中存在特殊字符(比如引号)导致的标签属性异常。
内容的提问来源于stack exchange,提问作者Xavvey
相关产品推荐
相关产品推荐

