Как заставить поле ввода принимать только цифры - PullRequest
0 голосов
/ 25 марта 2019

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

Что я сделал

$('#test').on('keypress', function(event) {

  var regex = new RegExp("^[0-9]+$");
  var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
  if (!regex.test(key)) {
    event.preventDefault();
    return false;
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<input type="number" class="form-control" id="test">

Появляется так на мобильном телефоне

this

- у меня естьпопытался ограничить это регулярным выражением, но не работает на телефоне

Редактировать Я почти закрылся, я пытаюсь использовать приведенный ниже код, но в первый раз он принимает минус -, когда я нажимаю не следующийвремя, как если бы я ввел 55, то я нажимаю -, он не принимает его, но когда я нажимаю - до того, как любое число принимает

(function($) {
  $.fn.inputFilter = function(inputFilter) {
    return this.on("input keydown keyup mousedown mouseup select contextmenu drop", function() {
      if (inputFilter(this.value)) {
        this.oldValue = this.value;
        this.oldSelectionStart = this.selectionStart;
        this.oldSelectionEnd = this.selectionEnd;
      } else if (this.hasOwnProperty("oldValue")) {
        this.value = this.oldValue;
        this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
      }
    });
  };
}(jQuery));




$("#uintTextBox").inputFilter(function(value) {


  return ^\d + [.] ? \d + $.test(value);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="uintTextBox" type="tel">

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Используйте это регулярное выражение, чтобы запретить ввод символа - в начале с <input type="tel">:

/^\d*[.]?\d*$/

. См. Рабочую скрипку: https://jsfiddle.net/uhkv65yj/

0 голосов
/ 25 марта 2019
 /* Function allows only numbers and decimal */
$(document).on('keypress','#test',function(eve) {
    if ((  eve.which != 45 ||eve.which != 46 || $(this).val().indexOf('.') != -1 ) 
         && ( eve.which <  48 || eve.which > 57 ) 
         || ( $(this).val().indexOf('.') == 0) 
       )
       {
            eve.preventDefault();
       }
 })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...