Javascript检测在Mouseup上保持的控制键

Mic*_*ski 17 javascript jquery javascript-events

我搜索了很多,似乎找不到满意的解决方案.我希望有人能帮帮忙.

当我使用jQuery时,我也在编写数千行Javascript.所以一个"纯粹的"JavaScript解决方案就好了.

我正在尝试确定控制键是否在物理上按下鼠标事件.而已; 没有其他先决条件.有没有人知道如何可靠,跨浏览器这样做?

我已经尝试通过记录按下和释放按键时将其存储在状态变量中:

// BEGIN store control key status in hash_state
$().bind('keydown','ctrl',function( arg_obj_e ){
  hash_state.sw_ctrldn = true;
  console.debug( hash_state.sw_ctrldn );
});
$().bind('keyup','ctrl',function( arg_obj_e ){
  hash_state.sw_ctrldn = false;
  console.debug( hash_state.sw_ctrldn );
});
// END store control key status in hash_state
Run Code Online (Sandbox Code Playgroud)

但是,这确实不起作用.如果你使用firebug测试它并观察控制台,你会发现自动重复似乎发生了,并且值切换.

我检查了mouseup事件以查看是否有任何有用的东西,但无济于事:

var debugEvent = function( arg_obj_e ){
  var str = '';
  for ( var attr in arg_obj_e ){
    str += attr + ': ' + arg_obj_e[attr] + '\n';
  }
  console.debug(str);
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

CMS*_*CMS 33

您可以使用event.ctrlKey属性.

$(function(){
  $('#elementId').mouseup(function(e){
    var isCtrlPressed = e.ctrlKey;
    // true or false whether ctrl is pressed or not 
  });
});
Run Code Online (Sandbox Code Playgroud)

在这里查看一个运行示例.