在提交编辑详细信息表单之前,我正在进行脏检查。这在表单加载后第一次工作,但如果我提交表单一次,脏检查将停止在后续调用中工作。
if(editForm.getForm().isDirty()) {
editForm.getForm().submit( {
url:'app/update',
waitMsg:'Saving data',
success:function(form,action) {
Ext.Msg.alert("Success", "Successfully updated");
},
failure: function(form,action) {
Ext.Msg.alert("Failure", "Failed to update");
}
});
} else {
Ext.Msg.alert("Message", "Nothing has been changed since you last saved.");
}
答案 0 :(得分:5)
这是因为您的表单正在将字段值与初始字段值进行比较。
您可以使用reset()
方法在提交后重置表单。如果您需要让用户在同一表单上继续编辑,您可以使用loadRecord()
方法重新加载包含最新数据的表单。或者您必须使用trackResetOnLoad
属性。将此属性设置为true。
答案 1 :(得分:5)
这对我有用。我在成功提交表单后添加了这个。
form.getForm().getFields().each(function(field){
field.resetOriginalValue( );
});
答案 2 :(得分:2)
你看过Ext.form.Panel属性trackResetOnLoad吗?尝试通过声明editForm.trackResetOnLoad = true将其设置为true;这可能有所帮助。祝你好运!
答案 3 :(得分:0)
我知道这是一个老帖子,但我想我会分享另一个解决方案。
isDirty()方法检查原始值。保存值后(在成功回调函数中),您可以使用此代码将原始值设置为新成功保存的值:
var fields = editForm.getForm.getFields().items;
Ext.each(fields, function(field){
field.originalValue = field.getValue();
});