jquery: keydown, keyup, небольшой фрагмент кода, почему это не работает? - PullRequest
1 голос
/ 05 января 2011

Почему это не работает?

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 ]

2 голосов
/ 05 января 2011

Вам нужен был способ определить, нажимается ли в данный момент элемент управления (e.ctrlKey) - это должно работать для вас:

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

Рабочая демонстрация здесь

1 голос
/ 05 января 2011

Зависит от того, что вы пытаетесь достичь.

Пара замечаний:

  • данные о событиях , которые вы передаете, должны быть объектом вместо одного символа.
  • обработчик keyup ничего не делает со сравнением ==. Вы, вероятно, хотели использовать присваивание =.

$(document).keyup( { theChar:"q" }, function(e) {
   holdingctrl = false;
});
1 голос
/ 05 января 2011

Я не совсем уверен, что вы пытаетесь сделать с этим фрагментом, но вы можете проверить, нажата ли ctrl , используя свойство event.ctrlKey:

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