Я'м пытаясь захватить нажатия клавиш со стрелками в jQuery, но события не вызываются.
$(function(){
$('html').keypress(function(e){
console.log(e);
});
});
Это создает события для буквенно-цифровых клавиш, но удалить, стрелки и т. п. создавать не событие.
Что я делаю не так, чтобы не запечатлеть?
Вот пример: демо JSnippet события keydown() против нажатие()
Вы должны использовать .события keydown()
потому что .нажатие клавиши () будет игнорировать на "Стрелки" и, для ловли использовать ключ типа
Е.что
Нажмите на экран, результат в фокус (внизу справа на экране скрипка) и затем нажмите клавиши со стрелками, чтобы увидеть его работу.
Примечания:
.нажатие()
никогда не будет уволен с Shift, Esc и удалить, но.события keydown () будет..нажатие клавиши ()
, в некоторых браузер будет срабатывать клавиши со стрелками, но это не кросс-браузер так, более надежный в использовании .события keydown()
.Более полезную информацию
.что "или".код объекта события - некоторые браузеры выиграл'т поддерживать одну из них, но когда с помощью jQuery его безопасным для использования, как с помощью jQuery стандартизирует вещи. (Я предпочитаю
.которых никогда не было проблем с).событие.ctrlKey
- сочетание клавиш Ctrl событие.altKey
- АЛТсобытие.shiftKey
- сдвигсобытие.metaKey
- мета ( команда ⌘ или Windows ключ )$(document).keydown(function(e) {
console.log(e.keyCode);
});
События нажатия клавиши обнаружить клавиши со стрелками, но не во всех браузерах. Так что'ы лучше использовать события keydown.
Эти коды вы должны получать в свой лог консоли:
Пожалуйста, обратитесь к ссылке с jQuery
http://api.jquery.com/keypress/
Он говорит
событие keypress посылается элементу, когда браузер регистрирует ввод с клавиатуры. Это похоже на событие keydown, за исключением того, что модификатор и непечатаемых клавиш, таких как Shift, Esc и удалить триггер события keydown, но не события нажатия клавиш. Другие различия между двумя событиями могут возникнуть в зависимости от платформы и браузера.
Это означает, что вы не можете использовать нажатие в случае стрел.
left = 37,up = 38, right = 39,down = 40
$(document).keydown(function(e) {
switch(e.which) {
case 37:
$( "#prev" ).click();
break;
case 38:
$( "#prev" ).click();
break;
case 39:
$( "#next" ).click();
break;
case 40:
$( "#next" ).click();
break;
default: return;
}
e.preventDefault();
});
$(document).on( "keydown", keyPressed);
function keyPressed (e){
e = e || window.e;
var newchar = e.which || e.keyCode;
alert(newchar)
}