#extjs
Вопрос:
Я хочу добавить событие, в котором, если я нажму на одну переключатель IP, в форме должно появиться одно поле IP-адреса, а если я нажму на переключатель диапазона IP, то должно появиться два поля IP-адреса, т. Е. «от:» и «до: «. Я использовал идентификатор элемента для полей IP. но у меня это не работает. «Измененный диапазон», который я определил в файле контроллера.
{
xtype: 'radiogroup',
fieldLabel: 'Type',
name: 'type',
items: [{
boxLabel: 'Single IP',
inputValue: 'SINGLE',
checked: true,
},{
boxLabel: 'IP Range',
inputValue: 'RANGE'
}]
listeners: {
change: 'modifiedIpRange'
}
}
modifiedIpRange: function(item, newVal, oldVal) {
switch (newVal.type){
case 'SINGLE': Ext.ComponentQuery.query('#ipField')[0].setHidden(false) amp;amp; Ext.ComponentQuery.query('#startIpField')[0].setHidden(true) amp;amp; Ext.ComponentQuery.query('#endIpField')[0].setHidden(true);
break;
case 'RANGE': Ext.ComponentQuery.query('#startIpField')[0].setHidden(false) amp;amp; Ext.ComponentQuery.query('#endIpField')[0].setHidden(false) amp;amp; Ext.ComponentQuery.query('#ipField')[0].setHidden(true);
break;
}
},
Комментарии:
1. Что ты имеешь в виду?
2. Если включено радио «Один IP», то в форме должно быть только одно текстовое поле, в противном случае для «Диапазона IP» в форме должно быть два текстовых поля
3. Какую версию ExtJS вы используете?
Ответ №1:
Что-то вроде этого?:
var rgChange = function(item, newVal, oldVal) {
switch (newVal.type){
case '1': Ext.get('txt2').hide();
break;
case '2': Ext.get('txt2').show();
break;
}
};
Ext.create('Ext.form.Panel', {
title: 'RadioGroup Example',
width: 500,
height: 325,
bodyPadding: 10,
renderTo: Ext.getBody(),
items:[
{
xtype: 'radiogroup',
fieldLabel: 'Type',
name: 'type',
items: [{
boxLabel: 'Single IP',
inputValue: '1',
checked: true,
},{
boxLabel: 'IP Range',
inputValue: '2'
}],
listeners: {
change: {
fn: rgChange
}
},
},
{
xtype:'textfield',
id: 'txt1',
fieldLabel:'From'
},
{
xtype:'textfield',
id: 'txt2',
fieldLabel: 'to',
hidden:true
},
]
});