在Javascript中检测左右控制键

时间:2013-03-02 10:42:12

标签: javascript javascript-events keydown keyup

我有一个文本输入,我需要在执行CTRL-V时绑定一个事件。我设置了一个名为ctrl的全局变量,每当keydown触发which值为17时,该变量设置为1.类似地,当keyupwhich时,它变为0点燃CTRL值为17

问题是,有两个CTRL个键。因此,如果我执行以下操作:首先按左CTRL键,然后按下它,同时按右CTRL键(以便现在同时按下keyup个键),并且然后我只发布其中一个,ctrl被触发,变量CTRL被设置为0,即使另一个CTRL键仍被按下。

如何触发事件,只有当两个{{1}}键都启动时才将变量设置为0(我不需要完全区分它们)。

6 个答案:

答案 0 :(得分:1)

keydown事件有两个属性。 您可以使用

区分左右Ctrl
if ( e.location == 1 || e.keyLocation == 1 ) {
    var keyPosition = 'left';
} else if ( e.location == 2 || e.keyLocation == 2 ) {
    var keyPosition = 'right';
}

答案 1 :(得分:1)

  

更新:现在可以在现代浏览器中使用

在Javascript中检测左右控制键的最简单方法



$(document).ready(function(){
  $("html").keydown(function(e) {

      if (e.ctrlKey) {
         if (event.location == 1) console.log('left ctrl');
         if (event.location == 2) console.log('right ctrl');
      }

  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

注意:运行代码段以激活键盘键时,必须单击内部空白区域。这是在Chrome和Safari中测试的。

答案 2 :(得分:0)

除非你在低级写作,否则我认为没有办法解决这个问题... keyCode对于两者都是一样的(它是17)

您可以使用e.ctrlKey来确定是否按下了控制键。

然而,我读到并发现one answer提到你可以在IE中做到这一点,但我没有尝试从我身边

答案 3 :(得分:0)

您可以使用e.originalEvent.location代替全局event.location

$(document).ready(function(){
  $("html").keydown(function(e) {

      if (e.ctrlKey) {
         if (e.originalEvent.location === 1) console.log('left ctrl');
         if (e.originalEvent.location === 2) console.log('right ctrl');
      }

  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 4 :(得分:-2)

你可以用这个:

$('#inputboxinput').bind('keypress', function(e) {
if(e.keyCode==13){
    // Enter pressed... do anything here...
}

});

跨浏览器的方式:

if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode: event.keyCode)) {
    event.which = event.charCode || event.keyCode;
}

答案 5 :(得分:-2)

下面的

是三个鼠标键盘事件的答案。休息为鼠标滚轮你应该再问:

/*
 1 = Left   Mousebutton
 2 = Centre Mousebutton
 3 = Right  Mousebutton
*/

$(document).mousedown(function(e) { 
if (e.which === 3) {
    /* Right Mousebutton was clicked! */
    alert("right key code 3");
}
else if(e.which === 2) {
    alert("Centre key code 2");
}
else if(e.which === 1) {
    alert("Left key code 1");
}
});