5
Ext 4.1を使用すると、選択コンボでフォームを作成したいと思います。現在選択されているオプションによって、異なるサブフィールドが表示/非表示になります。例の下:Extjsコンボ選択で動的に表示/非表示のフィールドを持つフォーム
今私は、コンボやレンダリングに隠されている2つの日付フィールドのセットを持っています。コンボ値が変更されると、私はこれらのフィールドを表示するイベントリスナーを持っています。しかし、これに取り組むのが最良の方法であるかどうかはわかりません。この場合、フィールドセットはうまくいくでしょうか?
Ext.define('TooltipForm', {
extend: 'Ext.form.Panel',
layout: {
type: 'vbox',
align: 'stretch'
},
border: false,
bodyPadding: 10,
initComponent: function(){
this.on('afterrender', this.onAfterRender, this);
this.callParent(arguments);
},
onAfterRender: function(){
this.items.each(function(item){
item.on('change', this.onChange, this);
}, this);
},
onChange: function(field, newValue){
if (field.name === 'range'){
switch(newValue){
case 'fit':
console.log('fit view');
break;
case 'complete':
console.log('complete view');
break;
case 'date range':
console.log('date range view');
break;
}
}
},
fieldDefaults: {
labelAlign: 'top',
labelWidth: 100,
labelStyle: 'font-weight:bold'
},
items: [
{
width: 50,
xtype: 'combo',
mode: 'local',
value: 'fit',
triggerAction: 'all',
forceSelection: true,
editable: false,
fieldLabel: me.rangeFieldLabel,
name: 'range',
queryMode: 'local',
store: ['fit', 'complete', 'date range']
},
{
width:50,
xtype: 'datefield',
fieldLabel: 'date from',
name: 'datefrom',
hidden: true
},
{
width:50,
xtype: 'datefield',
fieldLabel: 'date to',
name: 'dateto',
hidden:true,
}
]
});
表示と非表示は、私にとって問題ではありません。私の問題は、allowBlank:falseの隠しフィールドがfalseを返すようにform.isValid()を引き起こすことです。隠しフィールドを検証プロセスに参加させない方法はありますか? –
フィールドを無効にすると、フィールドの検証ができなくなります。 –