Удалить курсор ввода из combobox

Я использую ExtJS combobox. Появляется курсор ввода при фокусировке на поле ввода. Я попытался реализовать editable: false при создании combobox, но это помогло только для chrome.

тоже пробовал clearListeners() функция, чтобы увидеть, работает ли это на этом курсоре - не помогло, он по-прежнему появляется в FireFox и IE.

другая идея-установить disabled на поле ввода в combobox. Когда я делал это вручную, это помогало.

но когда я писал следующий!--5-->

Ext.get('bu-encodingcount-combobox').select('input').set({disabled:'disabled'});

это не помогло - не знаю, может быть, выражение неправильное.

3 ответов


причина, по которой вы видите курсор, заключается в том, что combobox получает фокус, поэтому самый простой способ справиться с этим-переместить фокус на раскрывающийся выбор всякий раз, когда комбо получает фокус.

просто добавить этот onFocus config к вашей конфигурации combobox:

// example combobox config
xtype: 'combo',
allowBlank: false,
forceSelection: true,
valueField:'id',
displayField:'name',
store: myStore,

// add this "onFocus" config
onFocus: function() {
    var me = this;

    if (!me.isExpanded) {
        me.expand()
    }
    me.getPicker().focus();
},

кроме того, я бы рекомендовал сделать это, только если это forceSelection: true combobox. Это разрушит способность пользователей вводить что-либо в поле.


вы можете добавить в config,

редактируемый: false

затем ведет себя как обычная комбинация.


попробуй

для IE

combo.inputEl.set ({disabled: 'disabled'});

Для Firefox -

combo.inputWrap.set ({disabled: 'disabled'});

Для Chrome -

combo.inputCell.set ({disabled: 'disabled'});

это работает нормально.