w3schools una teclado tecla presionar eventos evento javascript android jquery keypress hybrid-mobile-app

una - eventos de teclado javascript w3schools



Evento de pulsaciĆ³n de tecla JavaScript no generado en el navegador de Android (6)

He creado 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 controlador de eventos keypress no se presenta en el navegador móvil (Android 4+, WindowsPhone 7.5+). ¿Cual podría ser el problema?


Creo que Keypress está en desuso ahora. Puedes consultar en el Dom Nivel 3 Especificaciones . Usar keydown o keyup debería funcionar. La especificación también recomienda que use la entrada beforeinput lugar de la pulsación de tecla, pero no estoy seguro de cuál es el soporte de esto.


Creo que es una mala idea usar otros eventos en lugar de ''presionar teclas''. Lo que debe hacer es simplemente incluir un archivo jQuery en su proyecto. Un archivo llamado jQuery.mobile.js o similar (ej. JQuery.ui.js) de cualquier versión puede ayudarlo.

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


Probar keyup te ayudará

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


Sí, algunos navegadores 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 función para obtener el código de tecla mediante el envío de un valor char.

P.ej:

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


Use el evento de entrada de jQuery, como este:

$( ''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/


$(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); } }) })