ASP.NET Post-Back和window.onload

时间:2009-05-01 15:02:56

标签: javascript

我有一个函数可以检查某些输入字段是否已更改:

var somethingchanged = false;
$(".container-box fieldset input").change(function() {
   somethingchanged = true;
});

一个等待window.onload并触发此函数的函数:

window.onbeforeunload = function(e) {
    if (somethingchanged) {
        var message = "Fields have been edited without saving - continue?";
        if (typeof e == "undefined") {
            e = window.event;
        }
        if (e) { 
             e.returnValue = message;
        }
        return message;
    }
}

但是,如果我编辑某些字段并点击“保存”按钮,则事件会触发,因为有一个回发并且字段已被编辑。有没有这方面,所以单击保存按钮时事件不会触发?

由于

2 个答案:

答案 0 :(得分:1)

当我执行此模式时,页面上有一个showDirtyPrompt。然后,每当发生一个我不想通过脏检查的动作时,我只是将变量设置为false。您可以在按钮的客户端单击事件上执行此操作。

关于这一点的好处是,可能存在其他情况,您不想提示,例如,用户可能有其他按钮执行其他回发操作。这样你的脏检查功能就不必检查几个按钮,你就可以解决责任。

<input type="button" onclick="javascript:showDirtyPrompt=false;".../>

function unloadHandler()
{
   if (showDirtyPrompt)
   { 
    //have your regular logic run here
   }
   showDirtyPrompt=true;
}

答案 1 :(得分:0)

是。检查单击的按钮是否不是保存按钮。所以它可能像

if ($this.id.not("savebuttonID")) {
    trigger stuff
}