Я немного поссорился с этим. Многие решения здесь и в других местах казались сложными. Это решение использует jQuery / javascript вместе с HTML.
<input type="number" min="1" class="validateNumber">
$(document).on('change', '.validateNumber', function() {
var abc = parseInt($(this).val());
if(isNaN(abc)) { abc = 1; }
$(this).val(abc);
});
В моем случае я отслеживал небольшие количества с минимальным значением 1, поэтому min = "1" во входном теге и abc = 1 в проверке isNaN (). Для положительных чисел вы можете изменить эти значения на 0 и даже просто удалить min = "1" из тега input, чтобы учесть отрицательные числа.
Также это работает для нескольких ящиков (и может сэкономить вам время загрузки, выполняя их индивидуально по идентификатору), просто добавьте класс «validateNumber» там, где это необходимо.
Объяснение
parseInt () в основном делает то, что вам нужно, за исключением того, что возвращает NaN, а не какое-то целочисленное значение. С помощью простого if () вы можете установить «запасное» значение, которое вы предпочитаете во всех случаях, когда возвращается NaN :-). Также W3 заявляет здесь, что глобальная версия NaN будет вводить приведение перед проверкой, что дает дополнительную проверку (Number.isNaN () этого не делает). Любые значения, отправленные на сервер / бэкэнд, все равно должны там проверяться!