Это зависит от того, хотите ли вы int или float. Вот как эти два будут выглядеть:
<input type="number" name="int-field" id="int-field" placeholder="positive int" min="1" step="1">
<input type="number" name="float-field" id="float-field" placeholder="positive float" min="0">
К полю int прикреплена правильная проверка, поскольку его минимум равен 1. Однако, поле с плавающей запятой принимает 0; Чтобы справиться с этим, вы можете добавить еще один валидатор ограничений :
function checkIsPositive(e) {
const value = parseFloat(e.target.value);
if (e.target.value === "" || value > 0) {
e.target.setCustomValidity("");
} else {
e.target.setCustomValidity("Please select a value that is greater than 0.");
}
}
document.getElementById("float-field").addEventListener("input", checkIsPositive, false);
JSFiddle здесь.
Обратите внимание, что ни одно из этих решений не полностью препятствует тому, чтобы пользователь пытался ввести неверный ввод, но вы можете позвонить checkValidity
илиreportValidity
узнать, набрал ли пользователь допустимый ввод.
Конечно, вы все равно должны иметь проверку на стороне сервера, потому что пользователь всегда может игнорировать проверку на стороне клиента.