繁体   English   中英

键盘快捷键不起作用

[英]Keyboard shortcut not working

我正在使用HandsOnTable jquery插件,并且正在尝试处理特定的组合键( Alt + v )快捷方式。 但是由于某种原因它不起作用,这是我的代码和jsfiddle

$(document).ready(function () {
var isCtrl = false;
var isShift = false;
var isAlt = false;
// action on key up
$(document).keyup(function (e) {
    if (e.which == 17) {
        isCtrl = false;
    }
    if (e.which == 16) {
        isShift = false;
    }
    if (e.which == 18) {
        isAlt = false;
    }
});
// action on key down
$(document).keydown(function (e) {
    if (e.which == 17) {
        isCtrl = true;
    }
    if (e.which == 16) {
        isShift = true;
    }
    if (e.which == 18) {
        isAlt = true;
    }
    if (e.which == 86 && isAlt) //alt+v
    {
        console.log("alt+v detected");
        e.preventDefault();
        e.stopImmediatePropagation();
        return false;
    }
});
});

我正在使用铬,看起来所有按键事件都不会触发。 我发现有一个beforeKeyDown回调,可用于“修改键绑定”。 使用似乎可行:

$('#example').handsontable({
    data: data,
    minSpareRows: 1,
    colHeaders: true,
    contextMenu: true,
    beforeKeyDown: function (e) {
        if (e.altKey === true && e.which === 86) {
            console.log("alt-v");
            e.stopImmediatePropagation();
            e.preventDefault();
        }
    }
});

http://jsfiddle.net/JdzR3/

由于您使用的是jQuery,因此可以在事件上使用altkey属性。

$(document).on('keydown', function(e){
  var key = e.which || e.keyCode;

  if(e.altKey === true && key === 86){
     console.log("Alt+v");
  } 

});

有关该事件和其他关键事件的更多信息,请参见https://developer.mozilla.org/en-US/docs/Web/API/event.altKey

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM