यह इस बात पर निर्भर करता है कि आप एक इंट या फ्लोट क्षेत्र चाहते हैं। यहां देखें कि दोनों क्या दिखेंगे:
<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">
इंट फील्ड में सही वेलिडेशन जुड़ा हुआ है, क्योंकि इसका मिनिमम है 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
यह पता लगा सकते हैं कि उपयोगकर्ता ने वैध इनपुट में टाइप किया है या नहीं।
बेशक, आपके पास अभी भी सर्वर-साइड सत्यापन होना चाहिए क्योंकि उपयोगकर्ता हमेशा क्लाइंट-साइड सत्यापन को अनदेखा कर सकता है।