1

为什么这不起作用?

var holdingctrl = false;
$(document).keydown("q",function(e) {
 if(holdingctrl == true) 
 alert("Holding CTRL and pressing Q: Success.");
 e.preventDefault();
});

$(document).keyup("q",function(e) {
 holdingctrl == false 
});

下面的这个例子工作得很好,但我在上面做错了什么?

$(document).keyup("q",function(e) {
 alert("ONLY pressing Q: Success.");
});
4

3 回答 3

2

您需要一种方法来确定当前是否正在按下控件(e.ctrlKey) - 这应该适合您:

  $(document).keyup(function(e) 
    { 
        if (e.ctrlKey && e.keyCode == 81) 
        {
            alert("CTRL+Q Pressed");
        }
    });

工作演示在这里

于 2011-01-05T16:30:06.523 回答
1

我不完全确定您要使用此代码段做什么,但您可以ctrl使用该event.ctrlKey属性检查是否按下:

$(document).keydown(function(e) {
    if (e.ctrlKey && (e.keyCode == 81)) { // ctrl + q
        alert("Pressing Q and ctrl: Success.");
    }
});
于 2011-01-05T16:30:25.330 回答
1

取决于您要完成的工作。

情侣笔记:

  • 您传递的事件数据应该是一个对象而不是单个字符。
  • 处理keyup程序没有对比较做任何事情==。您可能打算使用=作业。

$(document).keyup( { theChar:"q" }, function(e) {
   holdingctrl = false;
});
于 2011-01-05T16:30:42.787 回答