我尝试过:
new Ext.util.KeyMap({
target: 'search',
eventName: 'itemkeydown',
binding: [
{
key: Ext.EventObject.ESC,
scope: this,
fn: function() {
console.log('esc');
},
defaultEventAction: 'preventDefault'
}
]
});
其中search
是元素的id
。虽然它没有绑定到元素 - 我将焦点传递给它,按ESCAPE
并且不会触发回调。
我错过了什么?
PS:我也尝试了Ext.get('search')
而不是search
,结果相同。
PPS:search
元素不是ExtJS控件,它是常规的<input type="text" ...>
答案 0 :(得分:3)
这是我的工作代码:
var map = new Ext.util.KeyMap({
target: 'search',
eventName: 'keydown', // changed from itemkeydown -> keydown
binding: [{
key: Ext.EventObject.ESC,
scope: this,
fn: function() {
console.log('esc');
},
defaultEventAction: 'preventDefault'
}
]
});
我的HTML元素如下:
<input type="text" id="search"/>
keydown
似乎是eventName
的默认值。代码将在没有它的情况下工作。你也可以使用4.0风格来实现它:
var map = new Ext.util.KeyMap("search", {
key: Ext.EventObject.ESC,
handler: function() {
console.log('esc');
},
scope: this,
defaultEventAction: 'preventDefault'
});