ขึ้นอยู่กับว่าคุณต้องการฟิลด์ 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
เพื่อตรวจสอบว่าผู้ใช้พิมพ์ในการป้อนข้อมูลที่ถูกต้อง
แน่นอนคุณควรยังคงมีการตรวจสอบฝั่งเซิร์ฟเวอร์เพราะผู้ใช้สามารถละเว้นการตรวจสอบฝั่งไคลเอ็นต์