Це залежить від того, чи потрібно ви 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 має додане до нього правильне підтвердження, оскільки його min дорівнює 1. Поле float приймає 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
з’ясувати, чи ввів він дійсний ввід.
Звичайно, у вас все ще має бути перевірка на сервері, оскільки користувач завжди може ігнорувати перевірку на стороні клієнта.