У меня есть 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 и т. Д.
Чтобы дать некоторый контекст, это для текстового поля, которое отслеживает поднимаемый вес, поэтому некоторые значения будут целыми, а другие будут с плавающей точкой.