Extjs 4动态地将多个面板添加到表单中

时间:2012-02-21 10:28:21

标签: dynamic extjs4 field panels

我有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();
                        }
                    });

通过隐藏和显示面板来实现具有多个面板的表单是否正确?或者我如何动态地向表单添加/删除面板?。

有没有更好的方法来实现这种形式。

谢谢。

1 个答案:

答案 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());
    }
});