JS - 当我离开当前页面时,beforeunload不会触发?

时间:2014-09-13 20:05:31

标签: javascript

我有一个ASP.NET网络表单应用程序,其中包含我在页面中导航时成功触发的确认对话框。我有页面提示用户确认保存或取消更改。当我导航到另一个链接时,该页面不会触发确认消息。

我正在尝试触发以下事件,但它仅适用于"相同"按下,返回,上一个,第一个等页面。当我点击页面上的菜单来加载新页面时,我没有看到在卸载之前。

当我通过单击ASP.NET中的菜单导航到另一个链接时,如何修改以下代码以提供相同的确认?

 $(window).on("beforeunload", function () {

                if ((updateCancelClicked == false) && ($("#MainContent_ErrorContent").text() != "No Action Items Found.") &&
                       ($("#FormChanged").val() == "true") || ($("#MainContent_btnUpdateItem").is(":disabled") == false) &&
                                                         ($("#MainContent_btnCancelItem").is(":disabled") == false)) {

                    if ((!firstConfirm || $("#MainContent_btnUpdateItem").is(":enabled")) && $("#MainContent_ConfirmAlertOn").val() == "True") 
                    {
                        firstConfirm = true;
                        confirmVal = confirm("Save changes? \"OK\" saves changes. \"Cancel\" removes changes.");
                    }
                    if (confirmVal) {
                        $.ajax({
                            type: "POST",
                            url: "ViewEditActionItem.aspx/UpdateFormData",
                            data: JSON.stringify({ actionItemID: $.trim($("#MainContent_txtActionItemID").val()), assignedDate: $.trim($("#MainContent_txtAssignedDate").val()), originalDueDate: $.trim($("#MainContent_txtOriginalDueDate").val()), ECD: $.trim($("#MainContent_txtECD").val()), ClosedDate: $.trim($("#MainContent_txtClosedDate").val()), criticality: $.trim($("#MainContent_ddlCriticality").val()), category1: $.trim($("#MainContent_ddlCategory1").val()), category2: $.trim($("#MainContent_ddlCategory2").val()), ownerUserID: $.trim($("#MainContent_ddlOwner").val()), altOwnerUserID: $.trim($("#MainContent_ddlAltOwner").val()), actionItemTitle: $.trim($("#MainContent_txtActionItemTitle").val()), progressID: $.trim($("#MainContent_ddlProgress").val()), actionItemStatement: $.trim($("#MainContent_txtActionItemStatement").val()), closureStatement: $.trim($("#MainContent_txtClosureStatement").val()), closureCriteria: $.trim($("#MainContent_txtClosureCriteria").val()), notes: $.trim($("#MainContent_txtNotes").val()) }),
                            contentType: "application/json",
                            dataType: "json",
                            async: false
                        });
                    }
                }
                else {

                    $("#MainContent_ConfirmAlertOn").val("True");
                    return;
                }
            });

0 个答案:

没有答案