Tengo dificultades para capturar la tecla de retroceso como un evento de teclado en javascript/jQuery. En Firefox, Safari, Opera, Chrome y en el iPhone/iPad, capturo un evento keyup en un cuadro de entrada de texto como este:Capturar evento clave para retroceso
$(id_input).keyup(function(event) {
that.GetHints($(this).val().trim(), event, fieldName);
});
Este evento captura las pulsaciones de teclado del usuario, y luego los envía a una función para emitir una llamada de búsqueda ajax.
Mi problema surge cuando un usuario desea retroceder sobre un personaje que ya ha escrito. En todos los navegadores a los que tengo acceso, excepto en mi teléfono Droid, cuando presiono la tecla de retroceso, este evento de captura captura el valor devuelto por $ (this) .val(). Trim() y lo envía a procesar en la función GetHints. En el Droid, sin embargo, ni este keyup ni un evento de keydown equivalente se activan hasta que el usuario retrocede sobre cada personaje en $ (this).
Así, por ejemplo, si escribo "cu", retroceda sobre la "u" dejando solo "c" en el campo de entrada, en todos los navegadores excepto en Droid, el evento de activación se disparará y llamará a la función GetHints("c", event, fieldName)
. En el Droid, el evento de teclado nunca se dispara.
¿Qué me estoy perdiendo? ¿Cómo/por qué esta tecla de retroceso, ya sea en el teclado virtual o en el teclado rígido, en mi Droid no funciona como se esperaba? ¿Cómo trabajo alrededor de esto?
Solo un tiro en la oscuridad, porque suena como un problema de Android: ¿has probado los eventos de pulsación de teclas o teclas? Quizás tengas más suerte con esos. – Jon
Sí, probaría la tecla presionada en lugar de la tecla – jnoreiga