Extjs 4, как предотвратить xtype: 'combo' с коллапсом, когда уже выбран выбранным элементом?
-
24-10-2019 - |
Вопрос
У меня есть 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
Функция вызывается, если текущее значение точно соответствует значению, которое вы пытаетесь установить.