标签:ext4
ext版本:4.2
需求:
在数据record绑定到form的时候,Ext会触发field的change事件和validate事件。以至于,新建的空表单界面,会出现验证不通过的样式,如下图:
解决思路:
在form loadRecord之前,禁止field的change()事件,loadRecord之后,开启field的change()事件。loadRecord方法会调用basicForm的setValues()方法,所以,重写setValues()方法,如下:
Ext.override(Ext.form.BasicForm, {
setValues: function (values) {
var me = this,hasChanged = me.owner.hasChanged,
v, vLen, val, field;
function setVal(fieldId, val) {
var field = me.findField(fieldId);
if (field) {
/** form加载数据的时候不验证*/
if (hasChanged) {
var d = field.disabled;
field.disabled = true;
field.setValue(val);
field.disabled = d;
} else {
field.setValue(val);
}
if (me.trackResetOnLoad) {
field.resetOriginalValue();
}
}
}
Ext.suspendLayouts();
if (Ext.isArray(values)) {
vLen = values.length;
for (v = 0; v < vLen; v++) {
val = values[v];
setVal(val.id, val.value);
}
} else {
Ext.iterate(values, setVal);
}
Ext.resumeLayouts(true);
return this;
}
});在项目代码中,调用如下:
infoForm.hasChanged = true; infoForm.loadRecord(record); infoForm.hasChanged = false;
本文出自 “技术人生” 博客,请务必保留此出处http://wangyuelucky.blog.51cto.com/1011508/1409834
ext4 form loadrecord disable validate,布布扣,bubuko.com
ext4 form loadrecord disable validate
标签:ext4
原文地址:http://wangyuelucky.blog.51cto.com/1011508/1409834