320 votos

La detección de la tecla de flecha de prensa en JavaScript

¿Cómo detectar cuando una de las teclas que se presionan? He utilizado esto para averiguar:

function checkKey(e) {
    var event = window.event ? window.event : e;
    if (true) {
        alert(event.keyCode)
    }
}

A pesar de que trabajaba para cada clave, no para teclas de flecha (tal vez porque el navegador es, naturalmente, supone para desplazarse en estas entradas).

550voto

zyklus Puntos 31683

teclas de flecha se activa sólo por onkeydown, no onkeypress

códigos de teclas son:

  • izquierda = 37
  • up = 38
  • derecha = 39
  • abajo = 40

169voto

ketan Puntos 733

En clave de arriba y abajo de la llamada de función. Existen códigos diferentes para cada tecla.

document.onkeydown = checkKey;

function checkKey(e) {

    e = e || window.event;

    if (e.keyCode == '38') {
        // up arrow
    }
    else if (e.keyCode == '40') {
        // down arrow
    }
}

80voto

1'' Puntos 5044

Posiblemente el tersest formulación:

document.onkeydown = function(e) {
    switch (e.keyCode) {
        case 37:
            alert('left');
            break;
        case 38:
            alert('up');
            break;
        case 39:
            alert('right');
            break;
        case 40:
            alert('down');
            break;
    }
};

Demo (gracias al usuario Angus Subvención): http://jsfiddle.net/angusgrant/E3tE6/

Esto debería funcionar cross-browser. Deje un comentario si hay un navegador donde no funciona.

Hay otras formas para conseguir el código de tecla (e.que, el correo.charCode, y de la ventana.evento en lugar de e), pero no debería ser necesario. Usted puede tratar la mayoría de ellos en el http://www.asquare.net/javascript/tests/KeyCode.html. Nota de ese evento.el código de la tecla no funciona con onkeypress en Firefox, pero no funciona con onkeydown.

16voto

Tim Down Puntos 124501

Uso keydown, no keypress para no imprimibles de las teclas teclas de flecha:

function checkKey(e) {
    e = e || window.event;
    alert(e.keyCode);
}

document.onkeydown = checkKey;

Los mejores JavaScript evento clave de referencia que he encontrado (superando los pantalones fuera quirksmode, por ejemplo) está aquí: http://unixpapa.com/js/key.html

8voto

kennebec Puntos 33886
function checkArrowKeys(e){
    var arrs= ['left', 'up', 'right', 'down'], 
    key= window.event? event.keyCode: e.keyCode;
    if(key && key>36 && key<41) alert(arrs[key-37]);
}
document.onkeydown= checkArrowKeys;

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X