ExtJs 4,如何防止xtype:'combo'在点击已选中的项目时崩溃?

时间:2011-04-27 10:44:09

标签: javascript extjs combobox extjs4

我有ComboBox。当我点击展开列表中的项目时,ComboBox选择此项并折叠。如果我点击已经选中的项目,它也会折叠。

当用户选择已选择的项目时,有没有办法“停止” ComboBox 折叠?

PS:要简短,我希望ComboBox的行为与http://dev.sencha.com/deploy/ext-4.0.0/examples/themes/index.html中的TimeField相似

更新

我不需要至少在IE7和IE8上不起作用的解决方案..

3 个答案:

答案 0 :(得分:4)

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;
        }
    }
});

答案 1 :(得分:3)

如果你想要这种行为:

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

答案 2 :(得分:3)

如果你正在处理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函数。