检测Javascript中的左右控制键

检测Javascript中的左右控制键,javascript,dom-events,keydown,keyup,Javascript,Dom Events,Keydown,Keyup,我有一个文本输入,在这里我需要在执行CTRL-V时绑定一个事件。我已经设置了一个名为CTRL的全局变量,每当使用值为17的按下键时,该变量被设置为1。类似地,当使用值为17的触发键控时,该值变为0 问题是,有两个CTRL键。因此,如果我这样做:首先按下左CTRL键,同时按下它,同时按下右CTRL键(以便现在按下两个CTRL键),然后我只释放其中一个键,keyup被激发,变量CTRL被设置为0,即使另一个CTRL键仍在按下 如何激发事件,使变量仅在两个CTRL键都已打开时设置为0(我不需要精确区分

我有一个文本输入,在这里我需要在执行CTRL-V时绑定一个事件。我已经设置了一个名为
CTRL
的全局变量,每当使用
值为17的
按下键时,该变量被设置为1。类似地,当使用
值为17的
触发
键控
时,该值变为0

问题是,有两个CTRL键。因此,如果我这样做:首先按下左CTRL键,同时按下它,同时按下右CTRL键(以便现在按下两个CTRL键),然后我只释放其中一个键,
keyup
被激发,变量
CTRL
被设置为0,即使另一个CTRL键仍在按下

如何激发事件,使变量仅在两个CTRL键都已打开时设置为0(我不需要精确区分它们)。

您可以使用以下方法:

$('#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;
}

下面是三个鼠标按键事件的答案。鼠标滚轮的休息您应该再次询问:

/*
 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");
}
});

我不认为有什么办法,除非你写在低水平。。。两者的键码相同(为17)

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


然而,我四处阅读,发现你可以在IE中做到这一点,但我并没有从我的角度尝试它

这一按键事件有两个属性。 您可以通过使用区分左键和右键Ctrl

if ( e.location == 1 || e.keyLocation == 1 ) {
    var keyPosition = 'left';
} else if ( e.location == 2 || e.keyLocation == 2 ) {
    var keyPosition = 'right';
}
更新:这在现代浏览器中是可能的

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

$(文档).ready(函数(){
$(“html”).keydown(函数(e){
如果(e.ctrlKey){
if(event.location==1)console.log('left ctrl');
if(event.location==2)console.log('right ctrl');
}
});
});

您可以使用e.originalEvent.location而不是全局event.location

$(文档).ready(函数(){
$(“html”).keydown(函数(e){
如果(e.ctrlKey){
if(e.originalEvent.location==1)console.log('left ctrl');
if(e.originalEvent.location==2)console.log('right ctrl');
}
});
});

你读过这个问题吗?此外,jQuery已经内置了
事件。你不需要重新发明它。嗯,你能更详细地解释一下你的答案吗?我不认为这会起作用…请仔细阅读问题,这与我所问的相去甚远!