我有一个函数可以检查某些输入字段是否已更改:
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;
}
}
但是,如果我编辑某些字段并点击“保存”按钮,则事件会触发,因为有一个回发并且字段已被编辑。有没有这方面,所以单击保存按钮时事件不会触发?
由于
答案 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
}