1

動的アイテムを含むフォーム パネルがあります。一部のアイテムは例のように非表示になっています:

        items: [{
            xtype: 'textfield',
            fieldLabel: 'Field 1',
            name: 'theField'
        },{
            xtype: 'textfield',
            fieldLabel: 'Field 2',
            name: 'theField'
        },{
            xtype: 'textfield',
            fieldLabel: 'Field 3',
            name: 'theField',
            hidden: true,
            allowBlank : false
        }]

しかし、次のようなフォームを送信すると

            if (form.isValid()) {
                alert('submit');
            }else alert('fail');

それはすべてのフィールドをチェックし、私のフォームは送信されません。
とにかく有効なフォームがありますか (フィールドのみが表示されます) ? ありがとう

これがhttp://jsfiddle.net/jZYcQ/をチェックする私の例です

4

2 に答える 2

0

非表示のフィールドが検証されます。非表示フィールドの検証を無効にするかスキップするには、'skipValidation' を true に設定します。また、'allowBlank' も設定されている場合は true に設定します。

したがって、通常、フィールドが定義され、それに検証が追加されている場合、skipValidation を true に設定すると、そのフィールドのフォーム送信検証が無効になります。ただし、allowBlank 検証は無効になりません。送信時にフィールドを空に設定することはできません。したがって、フィールドを必須にする以外に、フィールドに他の検証がある場合は、両方が必要になります。フィールドが表示されたらリセットします。

//View
xtype:'textfield',
allowBlank:false,
validator: function(){
  //custom validation 
}
...

//Controller
function(){
...
   form.down("#field").skipValidation = true;
   form.down("field").allowBlank = true;
...
}
于 2014-04-03T21:37:21.777 に答える