有没有一种方法可以捕获警报框的“确定”按钮点击事件?

16

有没有一种方法可以在jQuery中捕获警告框的“确定”按钮单击事件?


你是在谈论 confirm() Javascript 模态提示框吗? - Jared Farrish
7
如果你想在用户点击“确定”按钮后仍保留警告窗口,那是不可能的。然而,alert() 方法是同步执行的,这意味着在 alert() 之后的任何代码都将在用户点击按钮之后才执行。 - Bruno Silva
2
不需要这样做,alert() 被关闭后代码会继续执行。因此,你可以隐式地知道它已被点击。 - Pointy
1
正如其名称所示,它是向用户发出的警报。仅仅是一个警报。一旦用户确认,下一行将被执行。 - Kaf
6个回答

16

alert()函数是同步的,您无法验证点击了什么(它不返回任何内容),因此在调用之后,下面的代码将被执行并关闭(ok或close按钮)。警告框不用于获取用户输入。它是一条提醒消息。如果您需要检查用户想要什么,应该使用 confirm()。请注意,函数名称像警告一样反映了其用途。

例如:

// if the ok button is clicked, result will be true (boolean)
var result = confirm( "Do you want to do this?" );

if ( result ) {
    // the user clicked ok
} else {
    // the user clicked cancel or closed the confirm dialog.
}

@JaredFarrish:感谢你的赞美,Jared! - davidbuzatto

15

警告是一个阻塞函数,这意味着,如果你不关闭它,下面的代码将不会执行。因此,你不需要捕获警告关闭事件,只需在警告下面编写代码,在警告窗口关闭时,下面的代码将自动执行。

请参见下面的示例:

alert("Close Me");
// Write down the code here, which will executed only after the alert close
console.log("This code is executed after alert")


1
非常好的答案。你把它搞定了。 - Gass

10

免责声明:这是一个非常糟糕的做法。

技术上你可以使用以下代码来钩入它:

window.alert = function(al, $){
    return function(msg) {
        al(msg);
        $(window).trigger("okbuttonclicked");
    };
}(window.alert, window.jQuery);



$(window).on("okbuttonclicked", function() {
    console.log("you clicked ok");
});

alert("something");

演示:http://jsfiddle.net/W4d7J/1/


1
这不是跨浏览器的,这样做非常糟糕。也许你应该把它放在第一位...哈哈 - Jared Farrish
我在想如果没有.call,它是否可以在IE中工作,因为它会隐式地成为window的一个方法...编辑:对我来说,在IE7上确实可以工作,哈哈。 - Esailija
我把这个问题加入我的收藏夹,等待你的回答。 - GG.
有没有不用 jQuery 的解决方案? - cikatomo

2

window.alert()没有事件。基本上,当用户单击“确定”后,它被调用的下一行代码将会执行。我不确定为什么需要监听它。


有一个类似于 alert() 的本地提示,confirm(),它会给出一个布尔响应。我猜测 OP 使用了错误的术语。 - Jared Farrish

0

我在我创建的一个网站上尝试了这个方法,它完美地运行了:

<a href="javascript:var rslt=confirm('Cancel Appointment Creation');if(rslt){window.open('http://www.the_website_I_want_to_navigate_to.com')}else{}"> << Back </a>

0
你可以使用JAlert并为确定按钮分配一个点击处理程序。
类似于:
jAlert("Alert message goes here."); 
$('#popup_ok').bind('click',function(){
   //Do operation after clicking ok button.
   function_do_operation();
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接