TL; DR: पुराने ब्राउज़रों के बारे में परवाह नहीं है? का उपयोग करें form.reportValidity()
।
विरासत ब्राउज़र समर्थन की आवश्यकता है? पढ़ते रहिये।
वास्तव में सत्यापन को मैन्युअल रूप से ट्रिगर करना संभव है।
मैं पुन: प्रयोज्य में सुधार करने के लिए अपने उत्तर में सादे जावास्क्रिप्ट का उपयोग करूँगा, कोई jQuery की आवश्यकता नहीं है।
निम्नलिखित HTML फॉर्म को मानें:
<form>
<input required>
<button type="button">Trigger validation</button>
</form>
और आइए जावास्क्रिप्ट में हमारे यूआई तत्वों को पकड़ो:
var form = document.querySelector('form')
var triggerButton = document.querySelector('button')
इंटरनेट एक्सप्लोरर जैसी विरासत ब्राउज़रों के लिए समर्थन की आवश्यकता नहीं है? यह आपके लिए है।
सभी आधुनिक ब्राउज़र तत्वों पर विधि का समर्थन करते हैं।reportValidity()
form
triggerButton.onclick = function () {
form.reportValidity()
}
बस, हो गया। इसके अलावा, इस दृष्टिकोण का उपयोग करके यहां एक सरल कोडपैन है ।
पुराने ब्राउज़रों के लिए दृष्टिकोण
नीचे एक विस्तृत विवरण दिया गया है कि reportValidity()
पुराने ब्राउज़रों में कैसे अनुकरण किया जा सकता है।
हालांकि, आप अपने आप को कॉपी और अपनी परियोजना में उन कोड ब्लॉक पेस्ट की जरूरत नहीं है - वहाँ एक है ponyfill / polyfill आप के लिए आसानी से उपलब्ध।
जहां reportValidity()
समर्थित नहीं है, हमें ब्राउज़र को थोड़ा सा ट्रिक करने की आवश्यकता है। तो, हम क्या करेंगे?
- कॉल करके फॉर्म की वैधता की जांच करें
form.checkValidity()
। यह हमें बताएगा कि क्या फॉर्म वैध है, लेकिन सत्यापन यूआई नहीं दिखाएगा।
- यदि फ़ॉर्म अमान्य है, तो हम एक अस्थायी सबमिट बटन बनाते हैं और उस पर एक क्लिक ट्रिगर करते हैं। चूंकि फॉर्म वैध नहीं है, हम जानते हैं कि यह वास्तव में सबमिट नहीं होगा , हालांकि, यह उपयोगकर्ता को सत्यापन संकेत दिखाएगा। हम अस्थायी रूप से अस्थायी रूप से सबमिट बटन को हटा देंगे, इसलिए यह उपयोगकर्ता को कभी भी दिखाई नहीं देगा।
- यदि फॉर्म वैध है, तो हमें बिल्कुल भी हस्तक्षेप करने और उपयोगकर्ता को आगे बढ़ने की आवश्यकता नहीं है।
कोड में:
triggerButton.onclick = function () {
// Form is invalid!
if (!form.checkValidity()) {
// Create the temporary button, click and remove it
var tmpSubmit = document.createElement('button')
form.appendChild(tmpSubmit)
tmpSubmit.click()
form.removeChild(tmpSubmit)
} else {
// Form is valid, let the user proceed or do whatever we need to
}
}
यह कोड बहुत अधिक किसी भी सामान्य ब्राउज़र में काम करेगा (मैंने इसे IE11 में सफलतापूर्वक नीचे परीक्षण किया है)।
यहाँ एक काम कोड उदाहरण है।