jQuery, чтобы запретить ввод данных пользователем, если регулярное выражение не сопоставлено с помощью protectdefault - PullRequest
0 голосов
/ 04 февраля 2020

Каждый раз, когда пользователь вводит, значение проверяется с помощью регулярного выражения, я пытаюсь запретить пользователю вводить дальше в поле ввода, если регулярное выражение не соответствует

Используя событие keyup, предотвращение по умолчанию никогда не срабатывает и использование события нажатия клавиши пользователь не может ввести вообще, потому что в начале значение в поле ввода отображается как "" (ничего)

on keyup val=

on keypress val=

var discountRegex = /(^100([.]0{1,2})?)$|(^\d{1,2}([.]\d{1,2})?)$/
            $("#" + (idOfElement)).on("keyup",function (e) {

                var val=this.value
                var k = e.keyCode
                if(k==46 ||(k > 48 && k <97)){
                    console.log(k)
                    return discountRegex.test(val);
                }

            });

в приведенном выше коде idOfElement - это идентификатор, который я получаю в любом поле, на котором я фокусируюсь.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Пожалуйста, обратитесь к примеру кода. Если ключ ввода недействителен, ввод не будет принят. Также, пожалуйста, найдите скрипку для того же самого в комментарии.

<input type="text">


$(document).ready(function(){
  $("input").bind('keypress', function(e) {
  var str = e.keyCode;
  if (/(^100([.]0{1,2})?)$|(^\d{1,2}([.]\d{1,2})?)$/.test(str)) {
          alert('Invalid')
       e.preventDefault();
    } else {
       alert('Valid');
    }
});
}); 
0 голосов
/ 04 февраля 2020

Вы можете проверить, соответствует ли регулярное выражение, и если нет, вы можете удалить последний символ, как в примере ниже

Я обновил код с помощью примера нажатия клавиши

Пример

...