Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止在jQueryUI对话框接受答案之前离开页面_Jquery_Jquery Ui - Fatal编程技术网

如何防止在jQueryUI对话框接受答案之前离开页面

如何防止在jQueryUI对话框接受答案之前离开页面,jquery,jquery-ui,Jquery,Jquery Ui,我有以下代码: $(window).bind('beforeunload', function () { $("#dialogsendnotifications").dialog('open'); }); $("#dialogsendnotifications").dialog({ autoOpen: false, closeOnEscape: false, buttons: { "Ye

我有以下代码:

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

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

    $("#dialogsendnotifications").dialog({

        autoOpen: false,
        closeOnEscape: false,
        buttons: {
            "Yes": function () {
                $(this).dialog('close');
            },
            "No": function () {
                $(this).dialog('close');
            }
        }
    });
因此,基本上,当用户试图离开时,它会弹出“是非”对话框。麻烦的是,对话框出现了,但它在用户选择按钮之前就离开了页面


有人能告诉我如何让它等待用户选择答案吗?

返回false以阻止这样的操作:

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

你不能。
onbeforeuload
事件的限制非常非常严格。您所能做的就是返回一个字符串,然后浏览器将在其自己的对话框中使用该字符串。你不能做任何花哨的事

这里有一个例子:|


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

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

但在我的示例中,在“beforeunload”函数中有一个循环(
.each()
)。然后不要忘记在返回值之前退出循环;)

onbeforeunload
与其他事件不同
return false
对onbeforeunload没有任何影响,只是让浏览器显示“真的离开此页面?”对话框,其中有“false”一词。这很有趣。你能说event.preventDefault()来停止它吗?@robrich:同样,
onbeforeunload
是特殊的。如果您查看jQuery文档,您将看到
returnfalse
仅表示
event.preventDefault()
事件.stopPropagation()组合。所以不,
event.preventDefault()没有帮助。我强烈建议不要这样做。这是一种非常糟糕的用户体验,几乎任何合法的业务需求都可以用不同的方式更好地实现。例如,通过某种临时保存(可能是自动保存草稿)功能,可以更好地避免导航时意外丢失数据。如果他们失去联系怎么办?
$(window).on('beforeunload', function(){
 return '';
})