Capturar evento clave para retroceso
Estoy teniendo dificultad para capturar la clave de retroceso como un evento de teclado en javascript / jQuery. En Firefox, Safari, Opera, Chrome y en el iPhone / iPad, captura un evento de teclado en un cuadro de entrada de texto como este:
$(id_input).keyup(function(event) { that.GetHints($(this).val().trim(), event, fieldName); });
Este evento captura las pulsaciones del usuario y luego las envía a una función para emitir una llamada de consulta ajax.
- JQuery scrollLeft no funciona en Android
- Evento de clic de JQuery de un elemento div en li no disparado en Safari móvil
- Las funcionalidades de JQuery no funcionan cuando carga los datos html de una cadena en webview
- ¿Podemos invocar la funcionalidad de compartir nativo del teléfono inteligente con jquery?
- La aplicación Build con Herramientas para Apache Cordova falla
Mi problema viene cuando un usuario desea retroceder sobre un carácter él / ella mecanografió ya. En todos los navegadores a los que tengo acceso excepto para mi teléfono Droid, cuando presione la tecla de retroceso, este evento de keyup captura el valor devuelto por $ (this) .val (). Trim () y lo envía al proceso en la función GetHints. En el Droid, sin embargo, ni este keyup ni un evento keydown equivalente se desencadenan hasta que el usuario retroceda sobre cada carácter en $ (este).
Así, por ejemplo, si escribo "cu" y retrocedemos sobre "u" dejando sólo "c" en el campo de entrada, en todos los navegadores excepto Droid, el evento keyup se disparará y llamará a la función GetHints("c", event, fieldName)
. En el Droid, el evento keyup nunca se dispara.
¿Qué me estoy perdiendo? ¿Cómo / por qué esta tecla de retroceso, en el teclado suave o en el teclado duro, en mi Droid no funciona como se esperaba? ¿Cómo puedo solucionar esto?
- Jquery 1.6.2 funciona en el emulador de Android 2.1 pero no en el Samsung Galaxy S
- Aplicación móvil de JQuery comportamiento extraño
- Bootstrap 2.3 Problemas de menú plegables en Android Mobile
- ¿Cómo puedo crear una función similar a JQuery Slider en la aplicación web de iPhone / Android?
- Bootstrap de Twitter: no se cambia el tamaño de la barra de navegación en el cambio de orientación (solo con el navegador de acciones de Android)
- JQuery Mobile / Phonegap en android - todo el texto se muestra en mayúsculas
- ¿Hay una mejor vista web para Android
- Redirigir a appstore o google play
Podrías buscar cambios en el texto (usando setInterval
). Esto probablemente sería más confiable. Por ejemplo, keyup no se dispararía si el usuario hace clic con el botón derecho del ratón -> cortar. El sondeo por sí solo sería menos sensible, pero se podría combinar con keyup para mantenerlo rápido. Polling sería un poco más procesador pesado.
Intente algo en este sentido:
var oldText = ''; var timer = setInterval(function(){ var text = $(id_input).val().trim(); if(text != oldText){ oldText = text; that.GetHints(text, fieldName); } }, 500);
Ajuste la duración del intervalo según sea necesario.
No estoy seguro de lo que that.GetHints
hace con el event
, pero obviamente, no sería capaz de pasar que en el uso de la encuesta enfoque (porque no hay un evento real de ser despedido). ¿Es esto un problema?
Puede utilizar clearInterval(timer);
Para detener el sondeo si lo desea.
Usted podría mantener su función existente de keyup como es (para aumentar la capacidad de respuesta). Alternativamente, es posible que desee hacer una encuesta para evitar that.GetHints
ser llamado demasiado (por ejemplo, si alguien escribe algo en muy rápido).
- Anuncios nativos de Admob: tipo NativeAdManager no válido. Encontrado: qa; Requerido: NativeAdManager
- % 3F en lugar de un signo de interrogación en mi URL de actualización