1

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

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

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

谢谢你。

4

1 回答 1

1

措辞很好的q。

它不应该验证禁用的字段。

在 4.1 中修复了一个关于此的错误。我不确定它在您使用的任何 4.x 版本中的外观如何,但isValid如果您无法迁移,您可以在代码中将覆盖添加到 Ext.form.field.Base 的方法中以匹配 4.1 代码。像这样的东西:

Ext.override(Ext.form.field.Base, {
    isValid : function() {
        var me = this;
        return me.disabled || Ext.isEmpty(me.getErrors());
    }
});
于 2012-02-21T17:50:12.877 回答