JQuery проверить ввод HTML для чисел с плавающей запятой и целых чисел - PullRequest
0 голосов
/ 27 мая 2019

У меня есть 2 типа поля ввода HTML, первое должно принимать только целые числа (целые числа), что хорошо, это уже проверено, и это работает. Второй вход должен принимать ЛИБО целое число (целое число) или число с плавающей запятой. Это должно происходить внутри события «onkeypress», связанного с полем ввода. Он не может принимать входные данные с более чем одной десятичной точкой, например, «32..2», и он должен разрешать только числа с двумя десятичными знаками, например, «32.75». Это вызывает у меня серьезные проблемы с его работой, так как метод jQuery .val () не определяет полные остановки.

Я пытался использовать RegEx для захвата количества полных остановов, и он просто возвращает ноль, потому что метод jQuery .val () используется для получения начальной строки, но, как я уже говорил, он игнорирует полные остановки.

<input type="number" min="0" max="9999" step="any" class="form-control weight-input" onkeypress="return isValid(event, this)">

function isValid(e, elem) {

let charCode = (e.which) ? e.which : e.keyCode;

if ($(elem).hasClass("weight-input")) {
    if (charCode === 46 || charCode === 110 || charCode === 190) {
       return true;                             
    } else {
        return !(charCode > 31 && (charCode < 48 || charCode > 57 )) && $(elem).val().length <= 6;
    } else {
        return !(charCode > 31 && (charCode < 48 || charCode > 57 )) && $(elem).val().trim().length <= 5;
    }
}

Другой тип ввода, который просто должен принимать целочисленные значения, абсолютно нормален, и проверка правильна, он идет прямо к нижнему выражению else. Проблема в верхнем операторе if, где в данный момент говорится «return true», и мне нужен новый оператор, который проверяет значения с плавающей запятой.

Ожидаемый результат будет примерно таким: 5.2, 5.25, 100.5, 100.25. Допустимое число не может быть длиннее 7 символов, поэтому максимальное значение равно 9999,99.

Он не должен принимать отрицательные значения и / или что-либо подобное: 5..2, 5.2., ..... 2 и т. Д.

Чтобы дать некоторый контекст, это для текстового поля, которое отслеживает поднимаемый вес, поэтому некоторые значения будут целыми, а другие будут с плавающей точкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...