如何创建一个侦听组合按键(ctrl和左/右箭头)的事件监听器?

时间:2016-03-10 16:38:53

标签: javascript jquery

我有以下代码,使用左右箭头键在元素之间导航。

$(document).keydown(function (event) { 

    if (event.keyCode === 37) { 
        console.log("left")
        currentPosition > 0 ? currentPosition-- : maxFocusablePosition; 
    } 

    if (event.keyCode === 39) { 
        console.log("right")
        currentPosition < maxFocusablePosition ? currentPosition++ : 0; 
    } 

我尝试实现以下功能,但它不起作用:

if ( event.ctrlKey && ( event.which === 37 ) ) {
    console.log( "Combo Move" );
}

2 个答案:

答案 0 :(得分:0)

真的?我很惊讶因为ctrlKeywhich为我工作!

键盘事件API is a disgrace。关于键盘事件的标准化,W3C已经拖了很长时间。这就是为什么你可能会看到很多相互矛盾的信息。

$(function() {
  var input = $('input');
  input.on('keydown', function(event) {
    if (event.which === 37 && event.ctrlKey) {
      input.val('ctrl-left');
    } else if (event.which === 39 && event.ctrlKey) {
      input.val('ctrl-right');
    } else {
      input.val('');
    }
  });
  input.focus();
});
input { width: 100%; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input placeholder="Press Ctrl-left or Ctrl-right in here">

答案 1 :(得分:-1)

使用如下的keyCode并在函数中使用。

$(document).keydown(function (event) { 

    var keyCode = event.keyCode || event.which;

    if (keyCode === 37) { 
        console.log("left")
        currentPosition > 0 ? currentPosition-- : maxFocusablePosition; 
    } 

    if (keyCode === 39) { 
        console.log("right")
        currentPosition < maxFocusablePosition ? currentPosition++ : 0; 
    } 

    if ( event.ctrlKey && ( keyCode === 37 ) ) {
        console.log( "Combo Move" );
    }