4

我有一个文本输入,我需要在其中绑定一个事件CTRL- V。我已经设置了一个名为的全局变量ctrl,每当 a以 17keydown的值触发时,它就设置为 1。which同样,当 a以 17 的值keyup触发时,它设置为 0which

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

如何触发事件以使变量仅在两个CTRL键都打开时才设置为 0(我不需要完全区分它们)。

4

6 回答 6

3

更新:这在现代浏览器中现在是可能的

在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>

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

于 2017-10-14T20:50:53.410 回答
2

keydown 事件有两个属性。您可以通过使用区分左右 Ctrl

if ( e.location == 1 || e.keyLocation == 1 ) {
    var keyPosition = 'left';
} else if ( e.location == 2 || e.keyLocation == 2 ) {
    var keyPosition = 'right';
}
于 2015-10-21T10:10:54.527 回答
0

除非您在低级上编写,否则我认为没有办法... keyCode 对于两者都是相同的(它是 17)

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

但是,我阅读并找到了一个答案,提到您可以在 IE 中做到这一点,但我没有从我这边尝试过

于 2014-11-17T20:59:11.960 回答
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>

于 2020-03-30T00:28:34.670 回答
-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");
}
});
于 2013-03-04T06:10:31.800 回答
-3

你可以使用这个:

$('#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;
}
于 2013-03-02T10:45:19.583 回答