jquery:keydown,keyup,small snippet,为什么这不起作用?

时间:2011-01-05 16:25:25

标签: jquery events keydown onkeyup ctrl

为什么这不起作用?

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

3 个答案:

答案 0 :(得分:2)

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

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

Working Demo here

答案 1 :(得分:1)

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

$(document).keydown(function(e) {
    if (e.ctrlKey && (e.keyCode == 81)) { // ctrl + q
        alert("Pressing Q and ctrl: Success.");
    }
});

答案 2 :(得分:1)

取决于你想要完成的任务。

情侣笔记:

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

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