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

How can you create a event listener that listens to a combo of keypresses (ctrl and left/right arrow)?

本文关键字:ctrl 侦听器 事件 和左 组合 创建 何创建 一个      更新时间:2023-09-26

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

$(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" );
}

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

键盘事件 API 是一种耻辱。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">

按如下方式使用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" );
    }