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事件,您需要在同一元素上使用两个键映射。非常感谢,这非常有帮助,可以解决我的问题。如果我的答案解决了您的问题,请将我的答案标记为已接受。