1

使用 ExtJS 4.1.1 即使在 Ext.util.KeyMap 我已经设置了 defaultEventAction: 'preventDefault' 并且在 fn : 函数中我也设置了 e.preventDefault(); 它仍然会在 chrome 中打开新标签页吗?我只希望该字段执行键被实现的操作,而不是打开新选项卡的默认浏览器操作。这怎么可能?

    Ext.onReady(function () {

    var bcTextField = Ext.create('Ext.form.Text', {
        xtype: 'textfield',
        renderTo: 'console-output',
        emptyText: 'Enter Barcode/Accession Number',
        width: 200,
        margin: '0'
    });
    var map = new Ext.util.KeyMap({
        target: bcTextField.getEl(),
        binding: [{
            key: "t",
            ctrl: true,
            scope: this,
            defaultEventAction: 'preventDefault',
            fn: function (key, e) {
                e.preventDefault();
                alert('Ctrl + t was pressed.');
            }
        }]
    });
});

任何形式的帮助表示赞赏。

4

2 回答 2

0

在此线程中检查 Omniosis 的答案。给出了有关捕获此类事件的详细说明。希望能帮助到你。

javascript 捕获浏览器快捷方式 (ctrl+t/n/w)

于 2012-08-13T14:07:01.650 回答
0

你需要 e.stopEvent();

这就是我们使用的:

var map = new Ext.util.KeyMap({
    target: Ext.getBody(),
    binding: [{
        key: Ext.EventObject.F,
        ctrl: true,
        fn: function (key, e) {
            e.stopEvent(); //This stops the default behaviour ;-)
            //logic here...
        }
    }],
    scope: me
});
于 2012-08-13T14:22:24.323 回答