2012-03-01 125 views
1

我有以下功能,当访问者点击“取消”或尝试返回填充文本框时显示提醒。该功能完美工作,但不是当我点击提交时。当我按下按钮时,警报就会显示,我不想那样。当提交时不显示onbeforeunload提醒

var changed_flag = 0; 

$('input').change(function() { 
    changed_flag = 1; 
}); 

window.onbeforeunload = function() { 
    if(changed_flag) { 
     return 'You haven't saved your work!' 
    } 
}; 

我知道我应该编辑$('input').change(...,并添加input[type="submit"]但我不知道如何以及在何处。有谁知道我可以如何解决这个问题?

在此先感谢。

回答

2

尝试

$('form').submit(function() { 
    changed_flag = 0; 
}); 
+0

非常感谢! :)问题现在已经解决了! – Erik 2012-03-01 01:02:09

+0

感谢您复制我的答案,而不是提交评论。 – 2012-03-01 03:13:24

0
$('form').submit(function() { 
    $(window).unbind('beforeunload'); 
}); 

的或者代替解除绑定,你可以只是changed_flag = 0

+0

这个功能并没有在所有的工作:/我如何添加'changed_flag = 0'呢? – Erik 2012-03-01 00:49:09

+1

@Erik:在'submit'事件处理程序中放置'changed_flag = 0;',就像'change'事件处理程序中的'changed_flag = 1;'一样。 – 2012-03-01 00:54:41

+0

@FelixKling:像这样:'...(function(){changed_flag = 0});'? – Erik 2012-03-01 00:55:41

0

只要有你的提交按钮,删除该事件或设置changed_flag回到0

<input type="submit" onmousedown="changed_flag = 0" /> 

编辑:关于第二个想法把这个代码在您的onsubmit处理程序中,以防其他方式提交表单(如按Enter或通过其他函数)。

+0

不好的做法,把事件处理程序放在你的html标签,这不会像按Enter键提交表格 – 2012-03-01 00:46:43