Объединение событий кода клавиш в jQuery - PullRequest
2 голосов
/ 01 ноября 2011

Я создаю виртуальную клавиатуру в jQuery, использую события кода клавиши, чтобы пометить добавление, но комбинации кодов ключа бросают меня в цикл. Вот пример:

Я хочу добавить вопросительный знак только тогда, когда одновременно нажаты клавиши SHIFT (код клавиши 16) и косая черта (код клавиши 191). Я думал, что оператор && поможет, но это только добавляет косую черту:

$(document).keydown(function(e) { 

    if (e.keyCode == 16 && e.keyCode == 188  ) { 
         $('#mydiv').append('<span>?</span>');
     }

});

Есть предложения или идеи, почему && не работает, и что может сработать? Спасибо!

Ответы [ 3 ]

4 голосов
/ 01 ноября 2011

Проверка e.keyCode == 16 && e.keyCode == 188 не будет ничего полезного, потому что e.keyCode не будет одновременно 16 и 188. Оператор && является логическим соединением, поэтому он принимает значение true, если выражения с обеих сторон имеют значение true.

Я думаю, вы хотите посмотреть на e.shiftKey; если это правда, то клавиша Shift не работает, если e.shiftKey ложна, тогда Shift не выключена:

if(e.shiftKey && e.keyCode == 191) {
    // ?
}
else if(!e.shiftKey && e.keyCode == 191) {
    // /
}
0 голосов
/ 01 ноября 2011

попробуйте

$(document).keydown(function(e) {
  if (e.shiftKey){
     if (e.which == 188) { 
         alert('both');
     }

  }
});
0 голосов
/ 01 ноября 2011

Поскольку каждый ключ создает свое собственное событие нажатия клавиши, для keyCode никогда не будет равным 16 и 188.

К счастью, состояние SHIFT сохраняется в event.shiftKey:)

...