首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript检测Control键按住Mouseup

Javascript检测Control键按住Mouseup
EN

Stack Overflow用户
提问于 2009-07-31 03:30:13
回答 1查看 15.4K关注 0票数 19

我找了很多,但似乎找不到一个令人满意的解决方案。我希望有人能帮上忙。

在我使用jQuery的同时,我也在写成千上万行的Javascript。所以一个“纯”的javascript解决方案就可以了。

我正在尝试确定鼠标向上事件时是否按下了control键。仅此而已;没有其他前提条件。有人知道如何在跨浏览器的情况下可靠地做到这一点吗?

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

代码语言: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

然而,这真的不起作用。如果您使用firebug进行测试并查看控制台,您将看到似乎发生了自动重复,并且值发生了切换。

我检查了mouseup事件,看看是否有什么有用的东西,但没有用:

代码语言:javascript
复制
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);
}

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-07-31 03:49:35

您可以使用event.ctrlKey属性。

代码语言:javascript
复制
$(function(){
  $('#elementId').mouseup(function(e){
    var isCtrlPressed = e.ctrlKey;
    // true or false whether ctrl is pressed or not 
  });
});

查看正在运行的示例here

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1210547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档