我正在使用我在其他帖子上找到的一些代码,它运行良好,当您在保存更改之前尝试关闭页面时,它会提示您并询问您是否要留在页面上。问题是如果单击保存按钮(带回发的asp按钮),它会给你相同的消息。
所以我基本上需要在保存按钮的回发上停止显示。
var form_clean;
// serialize clean form
$(function () {
form_clean = $("form").serialize();
});
// compare clean and dirty form before leaving
window.onbeforeunload = function (e) {
var form_dirty = $("form").serialize();
if (form_clean != form_dirty) {
return 'There is unsaved form data.';
}
};
答案 0 :(得分:1)
我建议使用一个标志来表示你正在进行保存并且该规则不适用。像这样:
var form_clean;
var checkDirty = true;
//this should be called when the save button is clicked, but prior to the page post
function onSave(){
checkDirty = false;
}
window.onbeforeunload = function (e) {
if(checkDirty){
var form_dirty = $("form").serialize();
if (form_clean != form_dirty) {
return 'There is unsaved form data.';
}
}
};
我还建议您在DOM完全就绪后设置form_clean
变量,这样就可以确保您序列化正确的数据:
$(document).ready(function(){
form_clean = $("form").serialize();
});
一旦页面重新加载
,回复后标志应自动重置如果您需要设置onSave
功能的帮助,可以使用:
$("#mySubmitButtonID").click(function(){
onSave();
});