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

jQuery动态添加表单行后立即消失的解决方法求助

解决新增表单行点击后消失的问题

嘿,我一眼就瞅出问题所在啦——你的「添加行」按钮放在<form>标签里,而且没指定按钮类型,浏览器会默认把它当成提交按钮。点击的时候会触发表单提交,页面直接刷新,刚添加的行当然瞬间就没了!

有两种简单的解决办法,选一个就行:

方法1:给按钮指定type="button"属性

直接修改HTML里的按钮,加上type="button",明确告诉浏览器这是个普通按钮,不会触发表单提交:

<button id="addrows" type="button">添加行</button>

方法2:在点击事件里阻止默认行为

如果不想改动HTML,就在jQuery的点击事件里加上event.preventDefault(),拦截表单提交的默认动作:

$("#addrows").click(function(event) {
    // 阻止表单提交的默认行为
    event.preventDefault();
    var html = '';
    html += '<tr>';
    html += '<td></td>';
    html += '<td></td>';
    html += '<td> <input type="text" name="task[]" placeholder="任务" /></td>';
    html += '<td> <input type="number" name="time[]" value="0" style="width:40px;" /></td>';
    html += '<td> <button class="remove">删除</button></td></tr>';
    $("#table-items").append(html);
});

另外给你补个实用小细节:动态添加的删除按钮,直接绑定点击事件是无效的,得用事件委托才能让它正常工作,我顺便把这部分代码也补上:

// 用事件委托处理动态生成的删除按钮
$("#table-items").on('click', '.remove', function() {
    $(this).closest('tr').remove();
});

还有个小提醒:别给动态生成的input加重复的id(比如你原来的id="task"和id="time"),ID在页面里必须唯一,只用name属性就够了——你用的数组形式task[],提交时完全能正常获取所有输入值。

修改完之后,点击「添加行」按钮,新增的行就会稳稳留在页面上啦!

内容的提问来源于stack exchange,提问作者Shahbaz Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:50:32