Itu tergantung pada apakah Anda menginginkan bidang int atau float. Seperti apa keduanya nanti:
<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">
Field int memiliki validasi yang benar, karena minnya adalah 1. Field float menerima 0, namun; untuk mengatasinya, Anda dapat menambahkan satu validator kendala lagi :
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 di sini.
Perhatikan bahwa tidak satu pun dari solusi ini yang sepenuhnya mencegah pengguna mencoba mengetik input yang tidak valid, tetapi Anda dapat memanggil checkValidityataureportValidity mengetahui apakah pengguna telah mengetikkan input yang valid.
Tentu saja, Anda harus tetap memiliki validasi sisi-server karena pengguna selalu dapat mengabaikan validasi sisi-klien.