textfield, передать "false" в "disabled"
Всем доброго времени суток=)
Есть два объекта:
{
xtype: 'textfield',
name: 'mName',
emptyText: 'значение mName',
disabled: true, // по умолчанию выставляю объект не активным
fieldLabel: 'mName значение',
allowBlank: false
},{
xtype: 'fieldcontainer',
id: 'checkPanel',
defaultType: 'checkboxfield',
items: [{
boxLabel : 'Ввод значений mName',
name : 'cbName',
inputValue: '1',
id : 'checkbox1'
}]
}
Необходимо по нажатию на "cbName" передавать в "mName" значение disabled: false. Как понимаю есть два решения, и в обоих я застрял: 1. Listeners у объекта "mName".
listeners: {
... // собственно не понимаю на какое событие вешать прослушку.
}
2. handler у объекта "cbName".
handler: function () {
var sendString = Ext.getCmp('checkPanel').getValue();
... // не совсем ясно как передать полученное значение для mName.
}
Прошу помощи в этом вопросе :) |
example:
var items = [{
xtype: 'textfield',
name: 'mName',
emptyText: 'значение mName',
disabled: true, // по умолчанию выставляю объект не активным
fieldLabel: 'mName значение',
allowBlank: false
},{
xtype: 'fieldcontainer',
id: 'checkPanel',
defaultType: 'checkboxfield',
items: [{
boxLabel: 'Ввод значений mName',
name: 'cbName',
inputValue: '1',
listeners: {
change: function() {
this.up('panel').down('textfield').setDisabled(!this.checked);
}
},
id: 'checkbox1'
}]
}];
Ext.create('Ext.panel.Panel', {
items: items,
renderTo: Ext.getBody()
});
|
nekto_O,
Спасибо огромное за исчерпывающий пример.=) Конкретно меня интересовало только часть:
listeners: {
change: function() {
this.up('panel').down('textfield').setDisabled(!this.checked);
}
}
но с дополненым кодом, будет нагляднее для всех ищущих;) |
nekto_O,
Сразу возник еще вопрос. В строке this.up('panel').down('textfield').setDisabled(!th is.checked);, мы выбираем родителя текущего объекта и дочернему объекту "textfield" передаем уже значение нашего параметра. Но возникла такая ситуация, если к примеру в Итемах у нас перед "textfield", стоит еще:
{
xtype: 'datefield',
fieldLabel: 'дата',
id: 'startDate',
name: 'nameStartDate',
format:'d-m-Y',
maxValue: new Date()
},
тогда скрипт скрипт отрабатывает иначе: по нажатию на чекбокс, поле с выбором даты затемнится, а наше поле с текстом остается неудел. Возможно ли более конкретно указывать элемент которому передается "false" в "disabled"? Например по id. |
Сделал вот таким образом:
Ext.getCmp('idElement').setDisabled(!this.checked);
|
Так тоже должно работать:
listeners: {
change: function() {
this.up('panel').down('textfield[name="mName"]').setDisabled(!this.checked);
}
}
|
| Часовой пояс GMT +3, время: 00:41. |