我正在使用jquery dirrty插件来检查表单的状态,并在有一些未保存的更改时防止它重新加载。
链接到jquery.dirrty github
流:
1(我已经初始化了jquery.dirty 如下
$(function(){
initializeDirtyForm();
})
/** dirty form initialization*/
function initializeDirtyForm(){
$("#uAForm").dirrty().on("dirty", function(){
$("#uAFormSubmit").removeAttr("disabled");
}).on("clean", function(){
$("#uAFormSubmit").attr("disabled", "disabled");
});
}
2(页面上有一个表格,当它单击td单元格时,它会进行ajax调用。
function ajaxCallEdit()
{
var result = checkDirtyStatus();
if(result === false) {
return;
}
$.ajax({
....
....
....
....
success:function(){
initializeDirtyForm();
}
)}
}
/** check if the form is dirty */
function checkDirtyStatus(){
dirtyStatus = $("#uAForm").dirrty("isDirty");
if(dirtyStatus == true){
if (confirm("Changes you made may not be saved. Do you still want to reload?")) {
return true;
}else{
return false;
}
}
}
如果表单脏了,它完全可以正常工作并显示警告消息。
问题
这是主要问题,如果我强制它重新加载,(这意味着它实际上不会重新加载页面,而是会进行 ajax 调用(它仍然将表单的状态设置为脏。我已经尝试重新初始化jquery表单,但该表单仍然被标记为脏。
为了更加确定表单的状态,我检查了状态并尝试控制台登录ajaxSuccess。
....
success: function(){
initializeDirtyForm();
var result = checkDirtyStatus();
console.log(result);
}
...
但是,安慰此结果显示值为undefined
。
我找不到与手动设置相关的任何文档,并且重新启动未按预期工作。
因此,如果您是javascript向导,请检查上面附加的jquery.dirrty.js文件,并检查我是否可以从js文件或任何其他有助于我解决问题的黑客中触发以下部分。
setClean: function(){
this.isDirty = false;
this.history[0] = this.history[1];
this.history[1] = "clean";
}
如果您需要任何进一步的详细信息,请告诉我。
try $("#uAForm"(.dirrty("setClean"(;
我只是需要做同样的事情,这对我有用。
干杯