37 votes

jQuery keypress() événement ne se déclenche pas?

Je suis en train de mettre le feu à un événement sur la flèche droite et flèche gauche des touches avec jQuery. En utilisant le code suivant, je peux déclencher des événements sur une des touches alphanumériques, mais les touches de curseur (haut, bas, gauche, droite) feu rien. Je suis en train d'élaborer le site principalement pour les utilisateurs de IE car c'est une ligne d'application d'entreprise. Suis-je en train de faire quelque chose de mal ici?

$('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('???');  
            }      
});

47voto

Nick Berardi Points 31361

e.ce qui ne fonctionne pas dans IE essayer e.mot de code, aussi, vous voudrez probablement utiliser keydown() au lieu de keypress() si vous utilisez IE.

Voir http://unixpapa.com/js/key.html pour plus d'informations.

41voto

Jack Lawson Points 1467

Avec jQuery, je l'ai fait de cette façon:

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);
}

Aussi, essayez ces plugins, qui regarde comme ils le font tout le travail pour vous:

http://www.openjs.com/scripts/events/keyboard_shortcuts

http://www.webappers.com/2008/07/31/bind-a-hot-key-combination-with-jquery-hotkeys/

15voto

Mark Struzinski Points 11288

Eu:

Dans IE, jQuery feu keydown(), pas keypress() pour les touches fléchées, parce qu'ils sont considérés comme "spécial " clés".

Merci pour le lien, Nick. Qui m'a orienté dans la bonne direction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X