JQuery preventDefault не работает в браузере браузера android 4.4 по умолчанию

Я работаю с угловым и jquery-сайтом. У меня есть поле ввода текста для проверки массива чисел с плавающей запятой. Мое требование состоит в том, чтобы запретить пользователю вводить алфавиты и т. Д.

Проблема в том, что я использую e.preventDefault() но не работает в браузере по умолчанию в Android, но отлично работает в android chrome.

Я много искал, но не смог получить какое-либо решение.

Мой пример кода: –

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

Я также пробовал: –

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

Рабочая скрипка

Примечание. – Я не могу использовать событие keypress поскольку браузер по умолчанию для Android не может прослушивать это событие.

У меня также была проблема с браузером по умолчанию на Android. PreventDefault не помог мне, поэтому я использовал функцию .on jQuery.

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

Вы можете добавить в regex другие символы, которые вам нужно разрешить. Надеюсь, поможет.

Я не знаю, почему вы хотите предотвратить ключевое событие, но я думаю, вы просто хотите предотвратить ввод недопустимых символов. Давайте посмотрим, как вы можете решить свою проблему без 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/

Надеюсь, он решит вашу проблему повсюду и никогда не забудет о «пасте»!

Если вы разрабатываете веб-сайт на основе углового, вы должны решить проблему угловым способом.

Вот пример, как это сделать.

Идея заключается в использовании NgModelController и FormController .

Пожалуйста, используйте $formatters formatters angularjs. Это поможет вам проверить viewValue прежде чем он будет установлен на modelValue .

Просьба ознакомиться с этим документом: https://docs.angularjs.org/api/ng/type/ngModel.NgModelController