我有3个面板,每个面板将有7-10个字段。
主表单面板包含一个组合字段和3个面板。
根据组合选择的值,我隐藏了剩余的2个面板并显示了一个面板。
所有这三个面板都对字段进行了allowBlank: false
次验证。
在提交表单时,隐藏的字段也会被验证,并阻止表单提交。所以我想禁用隐藏的字段。我正在使用此代码。
question_multiple_option.query('.component').forEach(function(c){c.setDisabled(true);});
但是在EXT 4.X中,在提交表单时也会验证禁用字段。
在Ext 2.X和3.X中禁用的字段未经过验证且未提交。
之前我在ext 2.X
中使用了这段代码 Ext.getCmp('option').cascade(function(comp){
if (comp.isFormField) {
//comp.enable();
comp.disable();
}
});
通过隐藏和显示面板来实现具有多个面板的表单是否正确?或者我如何动态地向表单添加/删除面板?。
有没有更好的方法来实现这种形式。
谢谢。
答案 0 :(得分:1)
很好地措辞q。
不应该验证禁用的字段。
有一个bug关于此问题已在4.1中修复。我不确定它在你使用的任何4.x版本中看起来如何,但你可以在你的代码中添加一个覆盖到Ext.form.field.Base的isValid
方法以匹配4.1代码,如果你能不要迁移。像这样:
Ext.override(Ext.form.field.Base, {
isValid : function() {
var me = this;
return me.disabled || Ext.isEmpty(me.getErrors());
}
});