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, время: 05:13. |