Ответ 1
e.which не работает в IE try e.keyCode, также вы, вероятно, захотите использовать keydown() вместо keypress(), если вы нацеливаете IE.
Подробнее см. http://unixpapa.com/js/key.html.
Я пытаюсь запустить событие с правой и левой клавишей со стрелкой с помощью jQuery. Используя следующий код, я могу запускать события на любой из буквенно-цифровых клавиш, но клавиши курсора (вверх, вниз, влево, вправо) ничего не стреляют. Я разрабатываю сайт в первую очередь для пользователей IE, потому что это линейка бизнес-приложений. Я здесь что-то не так?
$('document').keypress(function(e){
switch (e.which) {
case 40:
alert('down');
break;
case 38:
alert('up');
break;
case 37:
alert('left');
break;
case 39:
alert('right');
break;
default:
alert('???');
}
});
e.which не работает в IE try e.keyCode, также вы, вероятно, захотите использовать keydown() вместо keypress(), если вы нацеливаете IE.
Подробнее см. http://unixpapa.com/js/key.html.
С jQuery я сделал это таким образом:
function checkKey(e){
switch (e.keyCode) {
case 40:
alert('down');
break;
case 38:
alert('up');
break;
case 37:
alert('left');
break;
case 39:
alert('right');
break;
default:
alert('???');
}
}
if ($.browser.mozilla) {
$(document).keypress (checkKey);
} else {
$(document).keydown (checkKey);
}
Кроме того, попробуйте эти плагины, которые выглядят так, как будто они делают все, что сработает для вас:
http://www.openjs.com/scripts/events/keyboard_shortcuts
http://www.webappers.com/2008/07/31/bind-a-hot-key-combination-with-jquery-hotkeys/
У вас есть слово "документ" в строке. Изменить:
$('document').keypress(function(e){
к
$(document).keypress(function(e){
Конечно, это закрытая проблема, я хотел бы добавить что-то к вашему обсуждению
В mozilla я заметил странное поведение для этого кода
$(document).keydown(function(){
//my code
});
код запускается дважды. Когда я отлаживался, я обнаружил, что на самом деле происходит два события: "keypress" и "keydown". Я отключил одно из событий, и код показал мне ожидаемое поведение.
$(document).unbind('keypress');
$(document).keydown(function(){
//my code
});
Это работает для всех браузеров, а также нет необходимости проверять специфику браузера (if ($. browser.mozilla) {}).
Надеюсь, что это может быть полезно для кого-то.
В исходном коде есть $('document')... когда он должен иметь $(документ) без кавычек.