Extjs 4, как предотвратить xtype: 'combo' с коллапсом, когда уже выбран выбранным элементом?

StackOverflow https://stackoverflow.com/questions/5802795

Вопрос

У меня есть ComboBox. Анкет Когда я нажимаю на элемент из расширенного списка, ComboBox Выберите этот элемент и обрушитесь. Если я нажимаю на уже выбранный элемент, он также рушится.

Есть ли способ "остановиться" ComboBox обрушившись, когда пользователь выбирает уже выбранный элемент?

PS: быть коротким, я хочу ComboBox вести себя как TimeField из http://dev.sencha.com/deploy/ext-4.0.0/examples/themes/index.html

ОБНОВИТЬ

Мне не нужны решения, которые не работают хотя бы на IE7 и IE8 ..

Это было полезно?

Решение

Если вы хотите такого поведения:

Ext.form.field.ComboBox.override({
    onItemClick: Ext.emptyFn
});

Другие советы

var cb = new Ext.form.ComboBox({    
    // here is your local store
    mode: 'local',
    store: new Ext.data.SimpleStore({
        fields: ['id', 'label'],
        data: [
            ['1', 'One'],
            ['2', 'Two']
        ]
    }),    
    listeners: {
        'beforeselect': function (combo, record, index) {
            // prevent collapsing if the same value is selected
            if (record.data.label == combo.getRawValue()) return false;
        }
    }
});

Если это 3,3, с которыми вы имеете дело, это, кажется, работает:

Ext.form.ComboBox.override({
  onSelect : Ext.form.ComboBox.prototype.onSelect.createInterceptor(function(record) {
    return this.getValue() !== record.data[this.valueField || this.displayField];
  })
});

Протестировано на Chrome и IE8. Это предотвращает onSelect Функция вызывается, если текущее значение точно соответствует значению, которое вы пытаетесь установить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top