Me pregunto qué estoy haciendo mal:
$(".s").keypress(function(e) {
switch (e.keyCode) {
case 8: // Backspace
//console.log('backspace');
case 9: // Tab
case 13: // Enter
case 37: // Left
case 38: // Up
case 39: // Right
case 40: // Down
break;
default:
doSearch();
}
});
Quiero que mi doSearch()
función también se active cuando presiono la Backspacetecla. Por el momento no pasa absolutamente nada cuando presiono BackspaceChrome y Safari.
¿algunas ideas?
Respuestas:
Usar en
keyup
lugar dekeypress
. Esto obtiene todos los códigos clave cuando el usuario presiona algofuente
keyup
dispararía para Retroceso cuandokeypress
no lo hará?keypress
paraEnter
clave,keydown
paraBackspace
y así sucesivamente; de lo contrario, encontrará que sus eventos en algunos navegadores no funcionan realmente como espera, especialmente cuando desea evitar el comportamiento predeterminado de la clave. Cuando usa el incorrecto, lo que sucederá es que su evento no se captura en absoluto (como es el caso de Retroceso) o no puede evitarlo; ya que sucede antes de que llegue el código de manejo de eventos.keyup
va a romper el teclado numérico . ¿Conoces una respuesta que permita detectar correctamente cualquier tecla en un teclado completo?keydown
es la mejor opción para todas las clavesMe encontré con esto yo mismo. Lo usé
.on
para que se vea un poco diferente, pero hice esto:Agregando mi trabajo por aquí. Necesitaba eliminar ssn escrito por el usuario, así que hice esto en jQuery
fuente
Si desea activar el evento solo en los cambios de su uso de entrada:
fuente
input
tampoco observa códigos clave. Esto tampoco funcionaría.De acuerdo con la documentación de jQuery para .keypress (), no captura caracteres no imprimibles, por lo que el espacio de retroceso no funcionará en la pulsación de teclas, pero se atrapa en keydown y keyup:
En algunos casos, el keyup no es deseable o tiene otros efectos no deseados y el keydown es suficiente, por lo que una forma de manejar esto es usar
keydown
para capturar todas las pulsaciones de teclas, luego establecer un tiempo de espera de un intervalo corto para que se ingrese la clave, luego realice el procesamiento en después de eso.fuente