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

jQuery中preventDefault后如何重新提交表单?

解决方法

你的问题出在调用了错误的方法来提交表单,按钮元素没有submit()方法,且直接触发click会再次进入你绑定的Ajax逻辑,以下是两种可行的解决方案:

方案1:直接提交所属表单(无需区分提交按钮)

如果后端不需要判断是哪个按钮触发的提交,直接找到按钮所在的表单并调用表单的submit()方法即可:

修改你的Ajax成功回调中的else分支:

else {
  // 找到当前按钮所属的表单并提交
  $(this).closest('form').submit();
}

方案2:模拟原生按钮提交(需传递submit按钮参数)

如果后端需要通过submit=Add这个参数判断操作类型(因为你两个提交按钮的name都是submit),可以通过解绑事件后触发原生点击来绕过jQuery绑定的Ajax逻辑:

修改else分支代码:

else {
  // 解绑body上绑定的.add按钮点击事件
  $('body').off('click', '.add');
  // 触发按钮的原生点击事件,执行默认表单提交
  $(this).trigger('click');
}

为什么你之前的方法无效

  • $('input[type="submit"]').submit() & $('.add').submit():submit()是表单元素的专属方法,提交按钮没有这个方法,调用后不会产生任何提交行为。
  • $('.add').trigger():trigger()必须指定要触发的事件名(比如trigger('click')),但即使补充了事件名,也会再次触发你绑定的Ajax逻辑,而非默认的表单提交行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:23:20