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

如何避免按下回车键时删除动态生成的表单行?

解决回车键误触删除表单行的问题

问题根源在于:浏览器默认会把表单内输入框按下回车键的行为,触发表单内第一个可点击按钮(比如你的删除按钮)的点击事件,或者事件冒泡后被body上的委托事件捕获执行。

给你几个直接有效的解决办法:


方法1:阻止输入框的回车默认行为

给动态生成的输入框绑定keydown事件,按下回车键时阻止默认行为和事件冒泡,避免触发按钮的点击:

// 阻止输入框回车触发默认行为
$("body").on("keydown", ".form_field_outer_row input", function(e) {
    if (e.keyCode === 13 || e.key === 'Enter') {
        e.preventDefault(); // 阻止浏览器默认提交行为
        e.stopPropagation(); // 阻止事件冒泡到body
        // 可选:如果需要回车切换到下一个输入框,在这里写逻辑
        // $(this).closest('.form_field_outer_row').next().find('input').focus();
    }
});

方法2:修改删除按钮的类型

如果你的删除按钮是<button>标签,默认类型是submit,浏览器会把它当成表单的提交按钮,回车时触发。改成button类型就能避免:

<!-- 原来的按钮 -->
<button class="remove_node_btn_frm_field">删除</button>
<!-- 修改后 -->
<button type="button" class="remove_node_btn_frm_field">删除</button>

方法3:在删除事件里判断触发方式

确保只有鼠标点击或触摸触发时才执行删除,排除键盘触发的情况:

$("body").on("click", ".remove_node_btn_frm_field", function (e) {
    // 只处理鼠标点击或触摸事件,排除键盘触发
    if (e.type === 'click' && !e.isTrigger) {
        $(this).closest(".form_field_outer_row").remove();
    }
});

推荐优先用方法2+方法1组合,既能从根源避免按钮被误触,又能防止输入框回车带来的其他默认行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:34:53