Nó phụ thuộc vào việc bạn muốn một trường int hay float. Đây là những gì hai người sẽ trông như thế nào:
<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">
Trường int có xác nhận chính xác được đính kèm với nó, vì min của nó là 1. Tuy nhiên, trường float chấp nhận 0; để giải quyết vấn đề này, bạn có thể thêm một trình xác nhận ràng buộc nữa :
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 ở đây.
Lưu ý rằng không có giải pháp nào trong số này hoàn toàn ngăn người dùng cố gắng nhập dữ liệu nhập không hợp lệ, nhưng bạn có thể gọi checkValidity
hoặcreportValidity
tìm hiểu xem người dùng đã nhập dữ liệu hợp lệ chưa.
Tất nhiên, bạn vẫn nên xác thực phía máy chủ vì người dùng luôn có thể bỏ qua xác thực phía máy khách.