Подтвердить что ты не робот

Событие jQuery keypress() не срабатывает?

Я пытаюсь запустить событие с правой и левой клавишей со стрелкой с помощью 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('???');  
            }      
});
4b9b3361

Ответ 1

e.which не работает в IE try e.keyCode, также вы, вероятно, захотите использовать keydown() вместо keypress(), если вы нацеливаете IE.

Подробнее см. http://unixpapa.com/js/key.html.

Ответ 2

С 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/

Ответ 3

У вас есть слово "документ" в строке. Изменить:

$('document').keypress(function(e){

к

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

Ответ 4

Конечно, это закрытая проблема, я хотел бы добавить что-то к вашему обсуждению

В mozilla я заметил странное поведение для этого кода

$(document).keydown(function(){
//my code 
});

код запускается дважды. Когда я отлаживался, я обнаружил, что на самом деле происходит два события: "keypress" и "keydown". Я отключил одно из событий, и код показал мне ожидаемое поведение.

$(document).unbind('keypress');
$(document).keydown(function(){
//my code
});

Это работает для всех браузеров, а также нет необходимости проверять специфику браузера (if ($. browser.mozilla) {}).

Надеюсь, что это может быть полезно для кого-то.

Ответ 5

В исходном коде есть $('document')... когда он должен иметь $(документ) без кавычек.