2013-09-18 2 views
3

Я хочу использовать горячие клавиши на одной из моих страниц. Однако кажется, что единственным ключом, который может быть обнаружен в моих горячих клавишах, является клавиша ввода.Обнаружение ключа, нажатого в jQuery keypress

$(document).keypress(function(e) { 
    var key = e.which; 
    switch (key) 
    { 
     case 72: 
      alert("H"); 
      break; 
     case 82: 
      alert("R"); 
      break; 
     case 66: 
      alert("B"); 
      break; 
     case 13: 
      alert("ENTER"); 
      break; 
     default: 
      alert("Invalid"); 
    } 
}); 

Отнесение основных кодовых значений: http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

+0

Какой выход, если вы 'предупреждение (ключ)' ? – jonhopkins

+0

Эти коды отлично работают в моем проекте. возможно, это из-за вашей кодировки. – AloneInTheDark

ответ

5

Согласно MDN (с помощью Документов Jquery для event.which), e.which возвращается Unicode character codes, так H может быть 72 или 104 (h) в зависимости от текста случая.

В нажатие клавиши событие, значение Юникода нажатой клавише хранится в либо KEYCODE или charCode собственности

Example fiddle

+0

Это ответило на мой вопрос. Благодарю. Но у меня все еще есть вопрос. Я хочу иметь несколько горячих клавиш, как я сказал в вопросе, и я хочу использовать JS-переключатель вместо нескольких 'if' 'и' if ... else'. Можно ли использовать 2 случая для одной функции? что-то вроде: 'переключатель (ключ) {' 'case 72 || case 104: // функция для вызова; ' ' break; ' '} ' Еще раз спасибо. –

+0

@KevinHandogTresuelo В этом случае вам нужно либо использовать ключи модификатора (Shift, Alt, Ctrl), либо сохранить текущие нажатые/отпускаемые клавиши в переменной. Все это обсуждается в [этом вопросе] (http://stackoverflow.com/questions/4954403/can-jquery-keypress-detect-more-than-one-key-at-the-same-time) – CodingIntrigue

Смежные вопросы