使用“提交”按钮停止回发警告用户他们将保留具有未保存数据的表单

时间:2011-12-29 07:15:14

标签: javascript .net forms webforms

我使用C#创建了一个表单。为了警告用户在进行更改之前离开网站,我添加了此JavaScript

    

var warnMessage = "You have entered new data on this page.  If you navigate away from this page without first saving your data, the changes will not be saved. To save your data, click the Cancel button, then save your data before leaving this page.";

var g_isPostBack = false;

function windowOnBeforeUnload() {
    if (g_isPostBack == true)
        return; // Let the page unload

    if (window.event)
        window.event.returnValue = warnMessage; // IE
    else
        return warnMessage; // FX
}

window.onbeforeunload = windowOnBeforeUnload;

当您离开页面时,它可以正常工作。问题是即使在保存表单数据后它也会触发。

单击“提交”按钮时会发生回发,这会将变量g_isPostback设置为false。

任何人都可以通过提交按钮阻止回发。

1 个答案:

答案 0 :(得分:1)

您有两个选项,两个选项都使用您的表单的onSubmit事件。

选项A:

function formOnSubmit(e) {
    g_isPostBack = true;

}

选项B:

function formOnSubmit(e) {
    window.onbeforeunload = false;
}

我会根据您现有的代码推荐选项A.不要忘记将表单的onSubmit绑定到formOnSubmit()函数。