trigger library javascript jquery keyboard key-bindings

javascript - library - jquery keypress enter



Enlace de teclas de flecha en JS/jQuery (16)

¿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.


¿Estás seguro de que jQuery.HotKeys no admite las teclas de flecha? He jugado con su demo antes y he observado que funcionan de izquierda, derecha, arriba y abajo cuando lo probé en IE7, Firefox 3.5.2 y Google Chrome 2.0.172 ...

EDITAR : Parece que jquery.hotkeys se ha trasladado a Github: https://github.com/jeresig/jquery.hotkeys


Con café y Jquery.

$(document).on ''keydown'', (e) -> switch e.which when 37 then console.log(''left key'') when 38 then console.log(''up key'') when 39 then console.log(''right key'') when 40 then console.log(''down key'') e.preventDefault()


Ejemplo de js puro con ir hacia la derecha o hacia la izquierda.

window.addEventListener(''keydown'', function (e) { // go to the right if (e.keyCode == 39) { } // go to the left if (e.keyCode == 37) { } });


En lugar de utilizar return false; como en los ejemplos anteriores, puede usar e.preventDefault(); Lo que hace lo mismo pero es más fácil de entender y leer.


Esto es un poco tarde, pero HotKeys tiene un error muy importante que hace que los eventos se ejecuten varias veces si se adjunta más de una tecla de acceso rápido a un elemento. Sólo tiene que usar jQuery simple.

$(element).keydown(function(ev) { if(ev.which == $.ui.keyCode.DOWN) { // your code ev.preventDefault(); } });


Puede usar el KeyCode de las teclas de flecha (37, 38, 39 y 40 para izquierda, arriba, derecha y abajo):

$(''.selector'').keydown(function (e) { var keyCode = e.keyCode || e.which, arrow = {left: 37, up: 38, right: 39, down: 40 }; switch (keyCode) { case arrow.left: //.. break; case arrow.up: //.. break; case arrow.right: //.. break; case arrow.down: //.. break; } });

Compruebe el ejemplo anterior here .


Puede verificar si una arrow key es presionada por:

$(document).keydown(function(e){ if (e.keyCode > 36 && e.keyCode < 41) { alert( "arrowkey pressed" ); return false; } });


Puedes usar KeyboardJS. Escribí la biblioteca para tareas como esta.

KeyboardJS.on(''up'', function() { console.log(''up''); }); KeyboardJS.on(''down'', function() { console.log(''down''); }); KeyboardJS.on(''left'', function() { console.log(''right''); }); KeyboardJS.on(''right'', function() { console.log(''left''); });

Compruebe la biblioteca aquí => http://robertwhurst.github.com/KeyboardJS/


Puedes usar jQuery bind:

$(window).bind(''keydown'', function(e){ if (e.keyCode == 37) { console.log(''left''); } else if (e.keyCode == 38) { console.log(''up''); } else if (e.keyCode == 39) { console.log(''right''); } else if (e.keyCode == 40) { console.log(''down''); } });


Simplemente he combinado los mejores bits de las otras respuestas:

$(document).keydown(function(e){ switch(e.which) { case $.ui.keyCode.LEFT: // your code here break; case $.ui.keyCode.UP: // your code here break; case $.ui.keyCode.RIGHT: // your code here break; case $.ui.keyCode.DOWN: // your code here break; default: return; // allow other keys to be handled } // prevent default action (eg. page moving up/down) // but consider accessibility (eg. user may want to use keys to choose a radio button) e.preventDefault(); });


Una robusta biblioteca de Javascript para capturar entradas de teclado y combinaciones de teclas ingresadas. No tiene dependencias.

http://jaywcjlove.github.io/hotkeys/

hotkeys(''right,left,up,down'', function(e, handler){ switch(handler.key){ case "right":console.log(''right'');break case "left":console.log(''left'');break case "up":console.log(''up'');break case "down":console.log(''down'');break } });


Una solución concisa con Javascript simple (gracias a Sygmoral por las mejoras sugeridas):

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

También vea https://.com/a/17929007/1397061 .


Vine aquí en busca de una forma sencilla de permitir que el usuario, cuando se enfoca en una entrada, use las teclas de flecha para +1 o -1 una entrada numérica. Nunca encontré una buena respuesta, pero hice el siguiente código que parece funcionar muy bien: ahora lo hago en todo el sitio.

$("input").bind(''keydown'', function (e) { if(e.keyCode == 40 && $.isNumeric($(this).val()) ) { $(this).val(parseFloat($(this).val())-1.0); } else if(e.keyCode == 38 && $.isNumeric($(this).val()) ) { $(this).val(parseFloat($(this).val())+1.0); } });


la flecha de prevención solo está disponible para cualquier otro objeto SELECCIONAR, bueno, en realidad no tengo pruebas en otro objeto LOL. pero puede detener el evento de flecha en la página y el tipo de entrada.

Ya trato de bloquear la flecha a la izquierda y la derecha para cambiar el valor del objeto SELECT usando "e.preventDefault ()" o "return false" en el evento "keydown" y "keyup" de "kepress" y "keyup", pero todavía cambia el valor del objeto. Pero el evento aún te dice que se presionó la flecha.


$(document).keydown(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) });

Ponga su código personalizado para las teclas de flecha entre el case correspondiente y las líneas de break .

e.which está normalizado por jQuery, por lo que funciona en todos los navegadores. Para un enfoque de javascript puro, reemplace las dos primeras líneas con:

document.onkeydown = function(e) { e = e || window.event; switch(e.which || e.keyCode) {


(editar 2017)
Si te sientes elegante, puedes usar e.key lugar de e.which o e.keyCode ahora. e.key está convirtiendo en un estándar recomendado, lo que le permite verificar contra las cadenas: ''ArrowLeft'' , ''ArrowUp'' , ''ArrowRight'' , ''ArrowDown'' . Los nuevos navegadores lo soportan de forma nativa, e.key .


$(document).keydown(function(e){ if (e.keyCode == 37) { alert( "left pressed" ); return false; } });

Códigos de caracteres:

37 - izquierda

38 - hasta

39 - cierto

40 - abajo