0

我试过的:

    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" ...>

4

1 回答 1

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'
});
于 2012-05-24T06:36:55.007 回答