【问题标题】:Why JS confirm() won't Cancel the submit action when I hit Cancel in confirm dialog?为什么当我在确认对话框中点击取消时,JS confirm() 不会取消提交操作?
【发布时间】:2013-12-25 16:08:43
【问题描述】:

我试图找出问题出在哪里,但没有任何线索。
通过使用 HTML5 多提交,我有一个表单的 4 个按钮。当我单击 DELETE 按钮时,会弹出一个对话框,使用属性onclick="confirm('message');。当我点击取消时,它应该停止表单提交,关闭对话框并保持在同一页面上而不进行任何操作,而是继续提交表单。到现在为止都运行良好,我也找不到问题出在哪里。

<form action="http://google.com/index/25" method="post" accept-charset="utf-8">
    <button class="btn" type="submit" name="formSubmit" value="new">New</button>
    <button class="btn" type="submit" name="formSubmit" value="save">Bulk save</button>
    <button class="btn btn-danger" type="submit" name="formSubmit" value="delete" onclick="confirm('Do you really want to remove a record(s)?.');">Delete permanently</button>
    <button class="btn" type="submit" onclick="confirm('stop or proceed');">submit</button>
</form>

还有现场直播DEMO IS HERE on jsbin

有人遇到同样的错误吗?

【问题讨论】:

标签: javascript html forms


【解决方案1】:

在表单而不是按钮上处理它,并让处理程序从确认对话框返回结果:

<form onsubmit="return confirm('stop or proceed');">

你也可以处理每个按钮的事件,但不要忘记返回:

<button onclick="return confirm('blabla');">Button</button>

【讨论】:

  • 嗯,直接在按钮上尝试使用 return 的代码,但我不确定它是否会工作。如果没有,您可以让每个按钮设置一个标志,您可以从表单的 onsubmit 中检查。
  • 但这就是我已经做的,不是吗?我的处理程序不工作,因为confirm() 对话框忽略了它。几天前它可以工作,我不知道它会是什么
  • 你没有返回确认的结果(至少不是你发布的代码)。
  • 哦,是的,我在confirm() 之前错过了return,现在它可以工作了,请你更新你的答案,但是&lt;button onclick="return confirm('blabla');"&gt;Button&lt;/button&gt; 而不是&lt;form /&gt;
【解决方案2】:

如果你想使用 Jquery,你应该使用这个代码:

<a href="www.blahblah.com" class="classTest">click</a>

JQuery

$(function () {
$(".classTest").click(function (e) {
            return confirm("Submit the Post action?");
 });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多