Ответ 1
Если вы хотите это поведение:
Ext.form.field.ComboBox.override({
onItemClick: Ext.emptyFn
});
У меня есть ComboBox
. Когда я нажимаю элемент из расширенного списка, ComboBox
выберите этот элемент и обрушитесь. Если я нажму на уже выбранный элемент, он также рухнет.
Есть ли способ "остановить" ComboBox
сбой при выборе пользователем уже выбранного элемента?
PS: чтобы быть коротким, я хочу, чтобы ComboBox
вел себя как TimeField
от http://dev.sencha.com/deploy/ext-4.0.0/examples/themes/index.html
UPDATE
Мне не нужны решения, которые не работают, по крайней мере, в 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
, если текущее значение точно совпадает с значением, которое вы пытаетесь установить.