Con jQuery, ¿cómo puedo saber qué tecla se presionó cuando me uní al evento de pulsación de tecla?
$('#searchbox input').bind('keypress', function(e) {});
Quiero activar un envío cuando ENTERse presiona.
[Actualizar]
A pesar de que encontré la respuesta (o mejor: una), parece que hay margen de variación;)
¿Hay alguna diferencia entre keyCode
y which
, especialmente si solo estoy buscando ENTER, que nunca será una clave Unicode?
¿Algunos navegadores proporcionan una propiedad y otros proporcionan la otra?
Respuestas:
En realidad esto es mejor:
fuente
e.which
cualquier evento que esté usando.e.which
no está configurado (permanece0
), peroe.keyCode
es (9
). Consulte stackoverflow.com/questions/4793233/… por qué esto es importante.Prueba esto
fuente
Si está utilizando jQuery UI, tiene traducciones para códigos de teclas comunes. En ui / ui / ui.core.js :
También hay algunas traducciones en tests / simulate / jquery.simulate.js pero no pude encontrar ninguna en la biblioteca central de JS. Eso sí, me limité a buscar las fuentes. Quizás hay alguna otra forma de deshacerse de estos números mágicos.
También puede utilizar String.charCodeAt y .fromCharCode:
fuente
Uncaught TypeError: String.charCodeAt is not a function
Creo que querías decir'\r'.charCodeAt(0) == 13
Dado que está utilizando jQuery, debería usar absolutamente .which. Sí, diferentes navegadores establecen diferentes propiedades, pero jQuery las normalizará y establecerá el valor .wh en cada caso. Consulte la documentación en http://api.jquery.com/keydown/ que dice:
fuente
... este ejemplo evita el envío de formularios (regularmente, la intención básica al capturar pulsaciones de teclas # 13):
fuente
editar: Esto solo funciona para IE ...
Me doy cuenta de que esta es una publicación antigua, pero alguien puede encontrar esto útil.
Los eventos clave se asignan, por lo que en lugar de usar el valor del código clave, también puede usar el valor clave para hacerlo un poco más legible.
Aquí hay una hoja de trucos con las teclas asignadas que obtuve de este blog
fuente
e.key
propiedadfuente
event.which
.Vea el excelente complemento jquery.hotkeys que admite combinaciones de teclas:
fuente
Espero que esto te pueda ayudar !!!
fuente
Esta es más o menos la lista completa de códigos clave:
fuente
De acuerdo, estaba ciego:
contendrá el código ASCII de la clave.
Ver https://developer.mozilla.org/En/DOM/Event.which
fuente
Aquí hay una descripción detallada del comportamiento de varios navegadores http://unixpapa.com/js/key.html
fuente
Solo complementaré el código de solución con esta línea
e.preventDefault();
. En el caso del campo de entrada del formulario, no asistimos para enviar al entrar presionadofuente
Agregue envío oculto, no escriba oculto, simplemente envíe con estilo = "display: none". Aquí hay un ejemplo (se eliminaron atributos innecesarios del código).
aceptará la tecla enter de forma nativa, no necesita JavaScript, funciona en todos los navegadores.
fuente
Aquí hay una extensión jquery que manejará la tecla enter presionada.
Un ejemplo de trabajo se puede encontrar aquí http://jsfiddle.net/EnjB3/8/
fuente
Bruja;)
Demostración: http://jsfiddle.net/molokoloco/hgXyq/24/
fuente
Uso
event.key
y moderno JS!Ya no hay códigos numéricos . Puede verificar la clave directamente. Por ejemplo
"Enter"
,"LeftArrow"
,"r"
, o"R"
.Documentos de Mozilla
Navegadores Soportados
fuente
deberías tener firbug para ver un resultado en la consola
fuente
Algunos navegadores usan keyCode, otros usan cuál. Si está utilizando jQuery, puede utilizarlo de manera confiable, ya que jQuery estandariza las cosas. Realmente,
fuente
Según la respuesta de Kilian:
Si solo ingresa la tecla, es importante:
fuente
La forma más fácil que hago es:
fuente
event.which
lugar deevent.keyCode
. Desde jQuery API :The event.which property normalizes event.keyCode and event.charCode. It is recommended to watch event.which for keyboard key input.
Acabo de hacer un complemento para jQuery que permite más fácil
keypress
eventos . En lugar de tener que encontrar el número y ponerlo, todo lo que tiene que hacer es esto:Cómo usarlo
Es así de simple. Tenga en cuenta que no
theKeyYouWantToFireAPressEventFor
es un número, sino una cadena (por ejemplo, disparar cuando se presiona, disparar cuando se presiona o, en el caso de un número, simplemente , sin comillas. Eso se dispararía cuando"a"
A"ctrl"
CTRL (control)1
1 se presiona).El ejemplo / código:
Mostrar fragmento de código
Debido a que la versión larga es tan ... bueno ... larga, he creado un enlace PasteBin para ella:
http://pastebin.com/VUaDevz1
fuente
Los
event.keyCode
yevent.which
son depravados. Consulte la respuesta de @Gibolt arriba o consulte la documentación: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEventevent.key
debería usarse en su lugarkeypress
el evento también se deprava: https://developer.mozilla.org/en-US/docs/Web/API/Document/keypress_eventfuente
Prueba esto:
fuente