2013-08-02 50 views
4

我試圖在工具欄中使用組合框來創建網格,在網格中我將獲得有關員工的一些信息,組合框將允許我選擇要加載這些信息的員工。組合框在每個按鍵上觸發更改事件

我已經創建了網格很容易,但我有工具欄中的組合框的問題:它每次打字時觸發更改事件。

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,但我希望在輸入部分有效值後進行本地過濾。

+1

你不能使用'select'事件嗎? – kevhender

回答

9

發生這種情況的原因是因爲每次按某個鍵時它實際上都會更改該值。你想使用的是select監聽器。使用此功能,您可以從所選記錄中獲取值。

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

我剛在ExtJS文檔中發現那個事件。感謝這樣快速的回答:) – Misiu

0

嘗試刪除「範圍:本」。一旦你移除它,當你在事件中調用它時,你將能夠看到事件被觸發的組合框。否則它將是窗口的值。

相關問題