2012-02-21 8 views
1

私は3つのパネルを持ち、各パネルには7~10のフィールドがあります。Extjs 4フォームに複数のパネルを動的に追加する

メインフォームパネルには、コンボフィールドと3つのパネルが含まれています。

選択されたコンボの値に基づいて、残りの2つのパネルが隠れて1つのパネルが表示されます。

これらの3つのパネルはすべてフィールドの確認がallowBlank: falseです。

フォームを送信している間、非表示のフィールドも検証され、フォームが送信できなくなります。だから私は隠されているフィールドを無効にしたい。私はこのコードを使用しています。

question_multiple_option.query('.component').forEach(function(c){c.setDisabled(true);}); 

EXT 4.Xでは無効なフィールドもフォームの送信中に検証されます。

無効なフィールドは検証されず、送信されません。

は、以前私がext 2.xで

Ext.getCmp('option').cascade(function(comp){ 
         if (comp.isFormField) { 
          //comp.enable(); 
           comp.disable(); 
         } 
        }); 

をこのコードを使用し、それは非表示とパネルを示すことにより、複数のパネルを使用してフォームを実装するための正しい方法です。または、パネルをフォームに動的に追加/削除する方法はありますか?

この種のフォームを実装する方法はありますか。

ありがとうございます。

答えて

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()); 
    } 
}); 
+0

ありがとう@Geronimo。私は、src/form/CheckBoxGroup.jsファイルの 'noValue = Ext.isEmpty(errors)'と 'isValid = me.disabled || Ext.isEmpty(エラー) 'しかし、私は同じ問題に直面しています。何が問題でしょうか? – nani1216

+0

バグレポートでそのような行を編集すると、CheckBoxフィールドのみが有効になります。上記のオーバーライドを独自のコードに追加して、すべてのフォームフィールドに適用する必要があります。 – Geronimo

+0

私は上記のコードを配置すると、無効にした放射線グループボタンも検証され、残りのテキストフィールドはフォームの送信中に検証されません – nani1216

関連する問題