问题 ExtJs 4,如何防止xtype:'combo'在点击已选中的项目时折叠?


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

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

PS:我想做的很短 ComboBox 表现得像 TimeField 从 http://dev.sencha.com/deploy/ext-4.0.0/examples/themes/index.html 

UPDATE

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


9797
2018-04-27 10:44


起源

如果你不知道答案,那么至少投票给它,所以其他人可以找到这个问题...... - Ai_boy


答案:


如果你想要这种行为:

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

3
2018-04-27 11:22



酷:)但这不适用于IE7,IE8 ...所以我不能使用它.. - Ai_boy
它也不适用于IE6 .. - Ai_boy
你得到了一个开发团队的小费并告诉他它不起作用!?也许你应该仔细看看你的代码。你可以扩展或覆盖。要修复它,您应该发布您使用的代码而不是Ext.emptyFn - sra
哇..抱歉它有效..问题是,在我选择相同的内容后,我改变了displayValue,所以ComboBox因为崩溃而崩溃,你的解决方案实际上是有效的... tnx再次 - Ai_boy


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

4
2018-04-27 22:57



这个解决方案不起作用 ExtJs 4.. - Ai_boy
在3.3.1它工作,我尚未测试4。 - Deniz Toprak


如果你正在处理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 如果当前值与您尝试设置的值完全匹配,则调用该函数。


3
2018-05-06 12:26



哎呀,ExtJS 4。 - wombleton
@Evan Trimboli描述的解决方案在IE8中适用于ExtJS 4。 - wombleton
不仅如此,它适用于IE6,7和9 - sra