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

点击Cancel时confirm()仍允许表单提交的技术问题求助

解决表单提交确认框失效的问题

我来帮你搞定这个问题!你遇到的核心问题是没有把确认框的结果返回给表单的onsubmit事件,导致浏览器不管用户点确定还是取消,都会执行默认的提交行为。

问题分析

你的next()函数确实返回了confirm的结果,但在onsubmit属性里只写了next(),并没有把这个返回值传递给事件处理逻辑。浏览器会忽略这个返回值,直接走默认提交流程。另外你的模板变量{{$foo}还少了一个闭合的大括号,这也会导致潜在的语法错误。

修正后的代码

function next() { 
  return confirm('Are you sure you want to Foo'); 
}
<form method="GET" action="/foo" onsubmit="return next()">
  <input type="hidden" name="delete" value="{{$foo}}" />
  <button class="btn btn-warning" type="submit"> Foo</button>
</form>

关键修改点

  • 在onsubmit里改成return next():这样confirm返回的true/false会直接传递给事件,返回false时浏览器会阻止表单提交,返回true时才会继续提交。
  • 修复模板变量的语法:把{{$foo}改成{{$foo}},避免解析错误。

原理补充

表单的onsubmit事件遵循一个规则:如果事件处理函数返回false,就会阻止默认的提交行为;如果返回true或者没有明确返回值,浏览器就会执行默认的提交操作。所以必须通过return把确认框的结果传递给这个事件,才能实现“确认后提交,取消则不提交”的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:42:50