Extjs4 Ext.grid.panel上的关键事件

Extjs4 Ext.grid.panel上的关键事件,extjs4,Extjs4,可能重复: 我需要将密钥侦听器添加到Ext.grid.Panel(即空间的密钥侦听器,左、右)。实际上,我需要在面板上捕捉“keyup”或其他一些与关键相关的事件。我什么都试过了,但没有成功。有人知道吗?我使用的是ExtJS4。对于初学者,请看一看。如果组件没有直接公开关键事件,则需要做一些工作。这可能不是最好的解决办法,但这只是一个开始 第一个技巧是知道一些DOM元素(如div)不会触发键事件,除非它们具有选项卡索引。因此,请执行以下操作:grid.getEl().set({tabindex

可能重复:


我需要将密钥侦听器添加到Ext.grid.Panel(即空间的密钥侦听器,左、右)。实际上,我需要在面板上捕捉“keyup”或其他一些与关键相关的事件。我什么都试过了,但没有成功。有人知道吗?我使用的是ExtJS4。

对于初学者,请看一看。

如果组件没有直接公开关键事件,则需要做一些工作。这可能不是最好的解决办法,但这只是一个开始

第一个技巧是知道一些DOM元素(如
div
)不会触发键事件,除非它们具有选项卡索引。因此,请执行以下操作:
grid.getEl().set({tabindex:“0”})
以使事情顺利进行

现在,网格元素将触发关键事件。下一步是添加一个以网格为目标的键映射。有几种方法可以做到这一点,但这里有一个很好的方法:

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
是一个对象数组,指定一个或多个要侦听的键和一个要触发的函数。如果查看文档,您可以了解更多信息


注意上面使用的
eventName
。您可以为每个键映射设置一种事件类型。因此,如果您想同时绑定keydown和keyup事件,您需要在同一元素上使用两个键映射。

非常感谢,这非常有帮助,可以解决我的问题。如果我的答案解决了您的问题,请将我的答案标记为已接受。