Jquery móvil – keydown keydown en dispositivos móviles

Tengo una necesidad de una entrada (tipo = 'texto') para ir enviar resultados a mi servidor para comprobar la disponibilidad de algo escrito por el usuario.

Utilizo el delegado para agregar los controladores de eventos a los elementos:

$(document).delegate('#signup', 'pageshow', function() { var keydown = function(e) { e = e || window.event; var char = e.which || e.keyCode; if (char == 8) { $(".pagemessage").text("Pressed: '<BACKSPACE>'"); appcheckDomainOnKeyDown(); } return true; }; var keyup = function(e) { e = e || window.event; var char = e.which || e.keyCode; if (char == 8) { appcheckDomainOnKeyUp(); } return true; }; var keypress = function(e) { e = e || window.event; var char = e.which || e.keyCode; var str = String.fromCharCode(char); $(".pagemessage").text("Pressed: '" + str +"'"); if (/[a-zA-Z0-9-\._]/.test(str) || char == 8 || char == 9) { appcheckDomainOnKeyDown(); appcheckDomainOnKeyUp(); return true; } return false; }; 

Los handers clave funcionan perfectamente en mi escritorio, pero no en un dispositivo móvil. Espero que pueda ver que estoy tratando de permitir que ciertos caracteres en la caja (y un espacio atrás para eliminar los caracteres.

Por el hecho de que no puedo ver la actualización del elemento pagemessage, 'keypress' no parece estar atrapado. Traté de manejar esto en el keyup / keydown, pero no estoy seguro de cómo aplicar los bits shiftKey para obtener un carácter real presionado – por ejemplo presionando + 5 daría '%' sin embargo, en el keydown devuelve shiftKey y 5.

Leí la documentación y lo más cercano que pude encontrar para 'keypress' fue un evento 'tap', pero tampoco funcionó.

He intentado atrapar el evento 'keypress' como se sugiere en un mensaje aquí, y en un escritorio esto no atrapa el backspace, y no hace nada en un dispositivo móvil.

Entonces probé esto como se sugirió en otro post:

  var inputEV = 'oninput' in window ? 'input' : 'keyup'; $("#new_domain").off(inputEV); $("#new_domain").on(inputEV, function (e) { keydown(e); keyup(e); }); 

Y no funciona en el navegador de escritorio o dispositivo móvil.

Entonces intenté cambiar el tipo de la entrada a la "búsqueda", y consigo un realce bonito, que un keypress agrega un botón claro … pero no hace nada en el dispositivo móvil con respecto a mi propia funcionalidad.

Creo que me he quedado sin cosas para probar, lo único que queda es agregar un botón para ir a comprobar – y nadie quiere que 🙂

¿Alguien sabe cómo puedo hacer lo que necesito?

En caso de que sea relevante, estoy usando cromo en mi escritorio y dispositivo Android (HTC uno, y Nexus 5)

One Solution collect form web for “Jquery móvil – keydown keydown en dispositivos móviles”

Keyup debería funcionar. Funciona en este ejemplo: http://jsbin.com/aNEBIKA/2/ . Que probado encontrar en mi Galaxy S3. Cada pulsación de tecla actualiza el elemento footer h3 con el texto introducido.

¿Podría ser que usted está obligando a sus oyentes en el momento equivocado? La documentación sugiere un enlace como este:

 $(document).bind('pageinit') 

http://demos.jquerymobile.com/1.2.0/docs/api/events.html

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.