Vinculación de teclas de flecha en JS/jQuery

Resuelto Alex S asked hace 15 años • 16 respuestas

¿Cómo hago para vincular una función a las teclas de flecha izquierda y derecha en Javascript y/o jQuery? Miré el complemento js-hotkey para jQuery (envuelve la función de enlace incorporada para agregar un argumento para reconocer teclas específicas), pero no parece admitir teclas de flecha.

Alex S avatar Sep 10 '09 06:09 Alex S
Aceptado
document.onkeydown = function(e) {
    switch(e.which) {
        case 37: // left
        break;

        case 38: // up
        break;

        case 39: // right
        break;

        case 40: // down
        break;

        default: return; // exit this handler for other keys
    }
    e.preventDefault(); // prevent the default action (scroll / move caret)
};

Si necesita admitir IE8, inicie el cuerpo de la función como e = e || window.event; switch(e.which || e.keyCode) {.


(edición 2020)
Tenga en cuenta que KeyboardEvent.whichahora está en desuso. Consulte este ejemplo para obtenerKeyboardEvent.key una solución más moderna para detectar teclas de flecha.

Sygmoral avatar May 15 '2011 20:05 Sygmoral
$(document).keydown(function(e){
    if (e.which == 37) { 
       alert("left pressed");
       return false;
    }
});

Códigos de caracteres:

37 - izquierda

38 - arriba

39 - derecha

40 - abajo

Josh avatar Sep 09 '2009 23:09 Josh

Puedes utilizar el keyCode de las teclas de flecha (37, 38, 39 y 40 para izquierda, arriba, derecha y abajo):

$('.selector').keydown(function (e) {
  var arrow = { left: 37, up: 38, right: 39, down: 40 };

  switch (e.which) {
    case arrow.left:
      //..
      break;
    case arrow.up:
      //..
      break;
    case arrow.right:
      //..
      break;
    case arrow.down:
      //..
      break;
  }
});

Consulte el ejemplo anterior aquí .

Christian C. Salvadó avatar Sep 09 '2009 23:09 Christian C. Salvadó