1

私は3つのパネルを持っており、各パネルには7〜10のフィールドがあります。

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

コンボで選択した値に基づいて、残りの2つのパネルを非表示にし、1つのパネルを表示しています。

これら3つのパネルすべてallowBlank: falseに、フィールドの検証があります。

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

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

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

Ext 2.Xおよび3.Xでは、無効なフィールドは検証されず、送信されません。

以前、私はext2.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 に答える