You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

动态HTML表格点击update后input输入框跳出表格错位如何解决

问题原因
    1. HTML表格结构不合法:<tr>的直接子元素只能是<td>/<th>,你把<form>标签、隐藏<input>字段直接放在<tr>和<td>之间,不符合规范的元素会被浏览器自动移出表格,导致表单元素跑到表格上方触发错位。
    1. 表单标签语法错误:<form action="update.php method="POST"缺少action属性的闭合双引号,也没有标签本身的闭合>,会触发浏览器异常解析,加重结构混乱。
    1. 链接标签未闭合:非编辑状态下的Update链接<a>标签缺少</a>闭合标记,也会干扰DOM结构渲染。
修正方案

调整核心渲染函数的代码,保证所有元素都放在<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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:24:03