¿Cómo detecto cuando se presiona una de las teclas de flecha? Usé esto para descubrir:
function checkKey(e) {
var event = window.event ? window.event : e;
console.log(event.keyCode)
}
Aunque funcionó para cualquier otra tecla, no lo hizo para las teclas de flecha (tal vez porque se supone que el navegador se desplaza en estas teclas de forma predeterminada).
javascript
keypress
keyboard-events
mihsathe
fuente
fuente
keypress
eventos para las teclas de flecha, pero tienes razón, esokeydown
siempre funciona para las teclas de flecha.53
unkeydown
evento. Se obtiene37
con elkeypress
, que es una cosa diferenteonkeyup
y detiene el evento allí. Sin embargo, de manera realista no deberías modificar el comportamiento de la interfaz de usuario con Javascript.Función de llamada arriba y abajo de la tecla. Hay diferentes códigos para cada clave.
fuente
e = e ? e : window.event;
O:if (typeof(e) === "undefined") { e = window.event; }
keyCode === 32
, nokeyCode == '32'
okeyCode === '32'
.event.key === "ArrowRight" ...
Más reciente y mucho más limpio: uso
event.key
. ¡No más códigos de números arbitrarios! Si está transpilando o sabe que sus usuarios están en navegadores modernos, ¡use esto!Manejo detallado:
Puede ampliar esto fácilmente para verificar
"w", "a", "s", "d"
o cualquier otra claveDocumentos de Mozilla
Navegadores Soportados
PS
event.code
es lo mismo para flechasfuente
key
y nokeyCode
, eso fue obsoleto.Posiblemente la mejor formulación:
Demostración (gracias al usuario Angus Grant): http://jsfiddle.net/angusgrant/E3tE6/
Esto debería funcionar entre navegadores. Deja un comentario si hay un navegador donde no funciona.
Hay otras formas de obtener el código clave (e.which, e.charCode y window.event en lugar de e), pero no deberían ser necesarias. Puede probar la mayoría de ellos en http://www.asquare.net/javascript/tests/KeyCode.html . Tenga en cuenta que event.keycode no funciona con onkeypress en Firefox, pero sí funciona con onkeydown.
fuente
Uso
keydown
, nokeypress
para teclas no imprimibles como las teclas de flecha:La mejor referencia de evento clave de JavaScript que he encontrado (superando el modo peculiar, por ejemplo) está aquí: http://unixpapa.com/js/key.html
fuente
Respuesta moderna ya que keyCode ahora está en desuso a favor de key :
fuente
Creo que el método más reciente sería:
Esto supone que el desarrollador quiere que el código esté activo en cualquier lugar de la página y el cliente debe ignorar cualquier otra pulsación de teclas. Eliminar el evento.preventDefault (); la línea si se presionan teclas, incluidas las capturadas por este controlador, aún debe estar activa.
fuente
fuente
arrs
fuera de la función? No hay necesidad de recrearlo en cada llamadaAquí hay un ejemplo de implementación:
fuente
var targetElement = typeof $0 !== 'undefined' ? $0 : document.body;
o simplemente:var targetElement = document.body;
está bienAsí es como lo hice:
fuente
He podido atraparlos con jQuery:
Un ejemplo: http://jsfiddle.net/AjKjU/
fuente
keypress
no funcionará con las teclas de flecha. Tienes que usar$(document).on('keydown', function() {...})
en su lugarEse es el código de trabajo para Chrome y Firefox
fuente
También estaba buscando esta respuesta hasta que encontré esta publicación.
He encontrado otra solución para conocer el código clave de las diferentes claves, cortesía de mi problema. Solo quería compartir mi solución.
Simplemente use el evento keyup / keydown para escribir el valor en la consola / alerta usando el mismo
event.keyCode
. me gusta-- rupam
fuente
Eso es mas corto.
function IsArrows (e) { return (e.keyCode >= 37 && e.keyCode <= 40); }
fuente
if ([37,38,39,40].indexOf(e.keyCode)!=-1){ console.log('arrow pressed') }
¡Esta biblioteca es genial! https://craig.is/killing/mice
Sin embargo, debe presionar la secuencia un poco rápido para resaltar el código en esa página.
fuente
Re respuestas que necesita
keydown
nokeypress
.Suponiendo que desea mover algo continuamente mientras se presiona la tecla, creo que
keydown
funciona para todos los navegadores, excepto Opera. Para Opera,keydown
solo se dispara en la primera pulsación. Para acomodar el uso de Opera:fuente
Las teclas de flecha se activan en el teclado
onkeydown permite ctrl, alt, mierdas
onkeyup permite pestañas, flechas arriba, flechas abajo, flechas izquierda, flechas abajo
fuente
Si usa jquery, entonces también puede hacer esto,
fuente
controle los códigos de tecla
%=37
y&=38
... y solo las teclas de flecha izquierda = 37 arriba = 38fuente
Si desea detectar pulsaciones de teclas de flecha pero no necesita específicas en Javascript
fuente
Con llave y ES6.
Esto le brinda una función separada para cada tecla de flecha sin usar el interruptor y también funciona con las teclas 2,4,6,8 en el teclado numérico cuando
NumLock
está activado .fuente