Evento de pulsación de teclas JavaScript no generado en el browser de Android

Creé un código simple para manejar el evento de keypress :

 var counter = 0; $('input').on('keypress', function () { $('div').text('key pressed ' + ++counter); }); 

JSFiddle.

Pero el controller de events de keypress no se genera en el browser mobile (Android 4+, WindowsPhone 7.5+). ¿Cual podría ser el problema?

Try keyup te ayudará

 var counter = 0; $('input').on('keyup', function () { $('div').text('key up ' + ++counter); }); 

Creo que la pulsación de tecla está en desuso ahora. Puede consultar las especificaciones Dom Level 3 . Usar el keyboard o la tecla debería funcionar. La especificación también recomienda que utilice beforeinput en lugar de keypress, pero no estoy seguro de cuál es el soporte de esto.

 $(document).ready(function() { var pattForZip = /[0-9]/; $('#id').on('keypress input', function(event) { if(event.type == "keypress") { if(pattForZip.test(event.key)) { return true; } return false; } if(event.type == 'input') { var bufferValue = $(this).val().replace(/\D/g,''); $(this).val(bufferValue); } }) }) 

Sí, algunos browseres de Android no son compatibles con el evento de pulsación de tecla, solo necesitamos usar keydown o keyup, pero obtendremos diferentes códigos de tecla, para evitar diferentes códigos de tecla use la siguiente function para get el código key al enviar el valor de char.

P.ej:

 function getKeyCode(str) { return str && str.charCodeAt(0); } function keyUp(){ var keyCode = getKeyCode("1"); } 

Usa el evento de input de jQuery, así:

 $( 'input' ).on( 'input', function() { ... } ); 

Con esto no puede usar e.which para determinar qué tecla se presionó, pero encontré una buena solución aquí: http://jsfiddle.net/zminic/8Lmay/

Creo que es una mala idea usar otros events en lugar de 'presionar teclas'. Lo que necesita hacer es simplemente include un file jQuery en su proyecto. Un file llamado jQuery.mobile.js o bastante similar (por ejemplo, jQuery.ui.js) de cualquier versión puede ayudarte.

Puede downloadlo desde: https://jquerymobile.com/download/