jQuery нажатие клавиш со стрелками
Я пытаюсь захватить нажатия клавиш со стрелками в jQuery, но события не вызываются.
$(function(){
$('html').keypress(function(e){
console.log(e);
});
});
это генерирует события для буквенно-цифровых клавиш, но delete, клавиши со стрелками и т. д. не генерируют события.
что я делаю неправильно, чтобы не запечатлеть?
6 ответов:
вот пример: JSNIPPET DEMO keydown () vs keypress ()
вы должны использовать
.keydown()
, потому что.keypress()
будет игнорировать "стрелки" , для ловли типа ключа используйтеe.which
нажмите на экран результатов для фокусировки (внизу справа на экране скрипки), а затем нажмите клавиши со стрелками, чтобы увидеть его работу.
Примечания:
.keypress()
никогда не будет запущен с Shift, Esc и Delete, но.keydown()
будет.- на самом деле
.keypress()
в некоторых браузерах будет срабатывать с помощью клавиш со стрелками, но его не кросс-браузер, так что его более надежным в использовании.keydown()
.больше полезной информации
- можно использовать
.which
или.keyCode
объекта события-некоторые браузеры не будут поддерживать один из них, но при использовании jQuery его безопасно использовать оба, так как jQuery стандартизирует вещи. (Я предпочитаю.which
никогда не было проблем с).- To обнаружить
ctrl | alt | shift | META
нажмите с фактическим захваченным ключом вы должны проверить следующие свойства объекта события - они будут установлены в TRUE, если они были нажаты:
event.ctrlKey
- ctrlevent.altKey
- altevent.shiftKey
- shiftevent.metaKey
- META ( команда ⌘ или клавиша Windows)наконец - вот некоторые полезные коды ( полный список - keycode-cheatsheet):
- введите: 13
- вверх: 38
- вниз: 40
- направо: 39
- левый: 37
- Esc: 27
- пробел: 32
- Ctrl: 17
- Alt: 18
- сдвиг: 16
$(document).keydown(function(e) { console.log(e.keyCode); });
события нажатия клавиши обнаружить клавиши со стрелками, но не во всех браузерах. Так что лучше использовать keydown.
Это коды ключей, которые вы должны получить в своем журнале консоли:
- налево = 37
- up = 38
- направо = 39
- вниз = 40
вы можете проверить, нажата ли клавиша со стрелкой:
$(document).keydown(function(e){ if (e.keyCode > 36 && e.keyCode < 41) alert( "arrowkey pressed" ); });
пожалуйста, обратитесь по ссылке из JQuery
http://api.jquery.com/keypress/
Он говорит:
событие keypress посылается элементу, когда браузер регистрирует ввод с клавиатуры. Это похоже на событие keydown, за исключением того, что модификатор и непечатающие клавиши, такие как Shift, Esc и delete, запускают события keydown, но не события нажатия клавиш. Другие различия между двумя событиями могут возникнуть в зависимости от платформы и браузер.
Это означает, что вы не можете использовать нажатие в случае стрел.