可能重複鍵事件:
ExtJS 4 and its new MVC: grid: how to handle keys?上Ext.grid.panel
我需要關鍵監聽器添加到Ext.grid.Panel(即,空格鍵收聽,左,對)。其實我需要在Panel上捕捉'keyup'或其他一些與鍵相關的事件。我嘗試了一切,但沒有成功。任何人有一些想法?我正在使用Extjs 4.
可能重複鍵事件:
ExtJS 4 and its new MVC: grid: how to handle keys?上Ext.grid.panel
我需要關鍵監聽器添加到Ext.grid.Panel(即,空格鍵收聽,左,對)。其實我需要在Panel上捕捉'keyup'或其他一些與鍵相關的事件。我嘗試了一切,但沒有成功。任何人有一些想法?我正在使用Extjs 4.
對於初學者,看看KeyMap。
如果組件不能直接暴露關鍵事件,則需要做一些工作。這可能不是解決這個問題的最好方法,但這是一個開始。
第一個訣竅是知道像div
這樣的一些DOM元素不會觸發按鍵事件,除非它們具有選項卡索引。所以做這樣的事情:grid.getEl().set({tabindex: "0"})
讓事情滾動。
現在你的網格元素將觸發關鍵事件。下一步是添加一個以你的網格爲目標的KeyMap。有幾種方法可以做到這一點,但這裏有一個很好的一個:
grid.getEl().addKeyMap({
eventName: "keyup",
binding: [{
key: Ext.EventObject.SPACE,
fn: function(){ console.log("Space key pressed"); }
},{
key: [Ext.EventObject.LEFT, Ext.EventObject.RIGHT],
shift: true,
fn: function(){ console.log("Left or right pressed while pressing shift"); }
}]
});
基本上,binding
是指定一個或多個鍵,監聽和功能觸發對象的數組。如果您檢查Ext.util.KeyMap文檔,您可以瞭解更多信息。
注意上面的使用eventName
。您可以爲每個KeyMap設置一種類型的事件。所以如果你想綁定到keydown和keyup事件,你需要兩個KeyMaps在同一個元素上。
非常感謝,這非常有幫助並解決了我的問題。 – springrules
如果我的答案解決了您的問題,請將我的答案標記爲已接受。 – Eric