在 'Cancel' 上 confirm() 仍然允许表单提交

On 'Cancel' confirm() still allows form to submit

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

我正在尝试为用户提供验证他们是否要提交表单的选项。目前上面的代码显示弹出确认框,但无论是否单击 'ok' 或 'cancel',表单都会提交。

我对 'confirm()' 的理解是,如果单击 'cancel',表单提交将停止。

Confirm() 是如何工作的,如何最好地实施它?

您需要在 HTML 中的 next() 之前加上 return:

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 false,您错过了。 confirm() returns false 当模式被关闭时。