Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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
JavaScript IsFormDirty{confirm()}被忽略_Javascript_Jquery - Fatal编程技术网

JavaScript IsFormDirty{confirm()}被忽略

JavaScript IsFormDirty{confirm()}被忽略,javascript,jquery,Javascript,Jquery,我觉得这是一个简单的答案,但我有一个JS块,它会在页面加载时加载。屏幕上的确认框popsup是formdirty,但无论我点击ok还是cancel,它都会取消。有什么帮助吗 window.onunload = function () { if (IsFormDirty) { if (confirm('Discard Unsaved Changes?')==false) { var form = $("div.tab-pane.active").find('form')

我觉得这是一个简单的答案,但我有一个JS块,它会在页面加载时加载。屏幕上的确认框popsup是formdirty,但无论我点击ok还是cancel,它都会取消。有什么帮助吗

window.onunload = function () {
if (IsFormDirty) {

    if (confirm('Discard Unsaved Changes?')==false) {

        var form = $("div.tab-pane.active").find('form');
        form.validate();
        if (form.valid()) {
            $.post(form.attr('action'), form.serialize(),
                function () {
                    refreshRebatePayments();
                }).fail(function (request) {
                    $('#dialog').html(request.responseText);
                    $.validator.unobtrusive.parse("#dialog");
                });

        }

    }
}

}谢谢大家。我发现问题是在函数出现之前函数上发生的JS运行时错误。它现在工作正常。旁注:我必须在IE8中工作,所以chrome问题不是问题。再次感谢

您的ajax在页面更改之前没有完成,它会被中止。这是async:false为appropriate@KevinB我不认为chrome以任何方式支持它,虽然是的,我不希望确认在所有情况下都起作用。你最好使用onbeforeunload事件。我想更多的浏览器支持您正在寻找的行为,即使是这样,也没有可靠的跨浏览器方式来做到这一点,当然,正如Keving所建议的那样,使用async false。谢谢大家。我发现问题是在函数出现之前函数上发生的JS运行时错误。它现在工作正常。旁注:我必须在IE8中工作,所以chrome问题不是问题。再次感谢