ComboBox在每个按键上触发更改事件

时间:2013-08-02 14:17:14

标签: extjs extjs4.2

我正在尝试使用工具栏中的组合框构建网格,在网格中我将有一些关于员工的信息,并且组合将允许我选择我想加载这些信息的员工。

我很容易创建网格,但是工具栏中的组合框有问题:每次输入内容时都会触发更改事件。

Ext.define('My.Grid.Combo', {
    extend: 'Ext.form.ComboBox',
    fieldLabel: 'Choose State',
    store: states,
    alias: 'widget.combostates',
    queryMode: 'local',
    displayField: 'name',
    valueField: 'abbr',
    forceSelection: true,
    listeners: {
        change: function (field, newValue, oldValue) {
            console.log(newValue);
        },
        scope: this
    }
});

以下是我的演示:http://jsfiddle.net/Misiu/LTVXF/

将光标置于该组合内并开始输入。每次按键后该事件被触发(见控制台)

我想在用户从该复选框中选择有效元素(我正在使用forceSelection)后触发该事件(或其他,无关紧要)。
我可以添加editable: false,但我希望在输入有效值的一部分后进行局部过滤。

2 个答案:

答案 0 :(得分:10)

发生这种情况的原因是因为每次敲击键时它实际上都在改变值。您想要使用的是select侦听器。使用此功能,您可以从所选记录中获取值。

listeners: {
    select: function(combo, records, eOpts) {
        console.log(records[0].get('name'));
        console.log(records[0].get('abbr'));
    }
}

答案 1 :(得分:0)

尝试删除“范围:此”。一旦你删除它,当你在事件中调用它时,你将能够看到触发事件的组合框。否则它将是窗口的值。