如何防止离开页面,直到从jquery ui对话框接受回答

时间:2012-04-28 09:11:06

标签: jquery jquery-ui

我有这段代码:

$(window).bind('beforeunload', function () {

        $("#dialogsendnotifications").dialog('open');
    });

    $("#dialogsendnotifications").dialog({

        autoOpen: false,
        closeOnEscape: false,
        buttons: {
            "Yes": function () {
                $(this).dialog('close');
            },
            "No": function () {
                $(this).dialog('close');
            }
        }
    });

所以基本上它的作用是当用户试图离开它时会弹出yes no对话框。问题是对话框出现了,但在用户选择按钮之前它会离开页面。

有人可以告诉我如何让它等到用户选择了答案吗?

3 个答案:

答案 0 :(得分:3)

你做不到。 onbeforeunload事件非常非常严格。您所能做的就是返回一个浏览器将在其自己的对话框中使用的字符串。你根本无法做任何事情。

以下是一个例子:Live copy | source

jQuery(function($) {

  $(window).bind("beforeunload", function(event) {
    return "This is the message you're allowed to provide";
  });

});

答案 1 :(得分:0)

谢谢你们。对我来说,这有助于:

$(window).on('beforeunload', function(){
 return '';
})

但是在我的例子中,我在" beforeunload" -function中有一个循环(.each())。然后不要忘记在想要返回值之前退出循环;)

答案 2 :(得分:-1)

返回false以阻止此操作:

$(window).bind('beforeunload', function () {
    $("#dialogsendnotifications").dialog('open');
    return false;
});