Jquery preventDefault no funciona en el navegador predeterminado de Android 4.4

Estoy trabajando con un sitio web angular y basado en jquery. Tengo un campo de entrada de texto para validar la matriz de números flotantes. Mi requisito es restringir al usuario el ingreso de alfabetos, etc.

El problema es que estoy usando e.preventDefault() pero no funciona en el navegador predeterminado de Android, pero funciona perfectamente en Android Chrome.

He buscado mucho pero no he podido encontrar ninguna solución.

Mi código de muestra: –

  $('#test').keydown(function (e) { e.stopPropagation(); e.preventDefault(); e.returnValue = false; e.cancelBubble = true; return false; }); 

También he intentado:

 $('#test').keydown(function (e) { if (e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; } }); 

Violín de trabajo

Nota: – No puedo usar el evento de keypress ya que el navegador predeterminado de Android no puede escuchar este evento.

También tuve este problema con el navegador predeterminado en Android. preventDefault no me ayudó, así que usé la función .on jQuery.

  $('#test').on('input',function () { var inputText = $(this).val(); var resultText = inputText.replace(/[^0-9]/g, ''); $(this).val(resultText); }); 

Puede agregar a regex los otros caracteres que necesita para ser permitido. Espero eso ayude.

No sé por qué quiere evitar un evento clave, pero creo que solo quiere evitar la entrada de caracteres inválidos. Veamos cómo puedes resolver tu problema sin preventDefault :

 (function(){ // anon function for scope var prevVal = $("#test").val(); // get initial value of input $('#test').on("input", function (e) { // input will also handle paste event. it handle every input' if(/*your `if` here*/ Math.random() > 0.3){ this.value = prevVal; // You shall not pass! } prevVal = this.value; // save current valid value }); })(); 

http://jsfiddle.net/rk5wuubo/

Espero que resuelva tu problema en todas partes y nunca olvides “pegar”.

Si está desarrollando un sitio web basado en angular, debe resolver el problema de forma angular.

Aquí la muestra de cómo hacer esto.

La idea es usar NgModelController y FormController .

Usa $formatters de angularjs. Esto lo ayudará a verificar viewValue antes de establecerse en modelValue .

Consulte este documento: https://docs.angularjs.org/api/ng/type/ngModel.NgModelController