दिलचस्प पोस्ट
पायथन में किसी शब्द को एक्सएमएल स्ट्रिंग कैसे परिवर्तित करें? डीजेंगो टेम्पलेट के भीतर वर्तमान यूआरएल कैसे प्राप्त करें? एंड्रॉइड स्थान प्रदाता – जीपीएस या नेटवर्क प्रदाता? मैं एक बार प्रति आवेदन शुरू करने के लिए कुछ एक बार कैसे निष्पादित कर सकता हूं? एंड्रॉइड स्टूडियो 2.0 में झटपट रन (बंद कैसे करें) मेरे एंड्रॉइड एप्लिकेशन में पीडीएफ कैसे पढ़ा जाए? पायथन के लिए SOAP क्लाइंट लाइब्रेरीज़ मौजूद हैं, और उनके लिए दस्तावेज कहां है? एंड्रॉइड ऐप से फेसबुक पेज खोलें? प्रमाणीकरण त्रुटियों के बाद मैं PrimeFaces AJAX का उपयोग कर एक पाठ फ़ील्ड कैसे आबाद कर सकता हूं? पैसिट_ग्रीड के साथ पैनल पृष्ठभूमि को सशर्त बदलना है? कैसे SSE4.2 और AVX निर्देशों के साथ Tensorflow संकलित करने के लिए? एसक्यूएल में, गिनती (स्तंभ) और गिनती (*) के बीच अंतर क्या है? मैं एक घटक टेम्प्लेट में एक तत्व कैसे चुन सकता हूं? हमें Boost :: asio :: io_service :: work का उपयोग करने की आवश्यकता क्यों है? उबंटू पर एलएक्सटीएल कैसे स्थापित करें I

ट्रिगर एचटीएमएल 5 फॉर्म वैधीकरण

मेरे पास कई अलग-अलग फील्ड्स के साथ एक फ़ॉर्म है मेरे पास कुछ जावास्क्रिप्ट है जो एक बार उपयोगकर्ताओं को फ़ील्ड सेट दिखाता है I HTML5 सत्यापन का समर्थन करने वाले ब्राउज़रों के लिए, मुझे इसका उपयोग करना अच्छा लगेगा हालांकि, मुझे इसे मेरे शब्दों पर करना होगा। मैं JQuery का उपयोग कर रहा हूँ

जब कोई उपयोगकर्ता अगले फ़ील्ड पर जाने के लिए जेएस लिंक पर क्लिक करता है, तो मुझे मौजूदा फ़ील्डसेट पर होने की पुष्टि करने की आवश्यकता है और समस्याएं सामने आने पर उपयोगकर्ता को आगे बढ़ने से रोकें।

आदर्श रूप में, जैसा कि उपयोगकर्ता एक तत्व पर ध्यान केंद्रित खो देता है, वैधीकरण हो जाएगा।

वर्तमान में जावास्क्रिप्ट जा रहा है और इसका इस्तेमाल करने के लिए नॉलिडाडेट है। देशी पद्धति का उपयोग करना पसंद करेंगे। 🙂

वेब के समाधान से एकत्रित समाधान "ट्रिगर एचटीएमएल 5 फॉर्म वैधीकरण"

आप मूल सत्यापन UI को ट्रिगर नहीं कर सकते, लेकिन आप मनमाने ढंग से इनपुट तत्वों पर आसानी से सत्यापन API का लाभ उठा सकते हैं:

$('input').blur(function(event) { event.target.checkValidity(); }).bind('invalid', function(event) { setTimeout(function() { $(event.target).focus();}, 50); }); 

पहला इवेंट आग checkValidity जैसे कि यह फोकस खो देता है, प्रत्येक तत्व पर checkValidity , यदि तत्व invalid तो इसी ईवेंट को निकाल दिया जाएगा और दूसरा ईवेंट हैंडलर द्वारा फंस जाएगा। यह एक तत्व पर वापस ध्यान केंद्रित करता है, लेकिन यह काफी परेशान हो सकता है, मुझे लगता है कि त्रुटियों के बारे में सूचित करने के लिए आपका बेहतर समाधान है। यहां पर मेरे कोड का काम उदाहरण है

कुछ हद तक, आप एचटीएमएल 5 फॉर्म सत्यापन को trigger सकते हैं और फॉर्म सबमिट किए बिना उपयोगकर्ता को संकेत दिखा सकते हैं!

दो बटन, मान्य करने के लिए एक, सबमिट करने के लिए एक

वैश्विक क्लिक ( justValidate ) सेट करने के लिए मान्य क्लिक बटन पर एक justValidate श्रोता सेट करें, यह इंगित करने के लिए कि यह क्लिक फॉर्म के सत्यापन की जांच करने के लिए है।

और justValidate flag को झूठे में सेट करने के लिए सबमिट बटन पर एक justValidate श्रोता सेट करें।

फिर फॉर्म के justValidate हैंडलर में, आप फ़्लैग को चेक करने के लिए फ़ॉर्म को रोकने के लिए वापसी मूल्य को तय करने के लिए केवल justValidate और preventDefault() को justValidate । जैसा कि आप जानते हैं, एचटीएमएल 5 फॉर्म मान्यता (और उपयोगकर्ता के लिए GUI संकेत) onsubmit इवेंट के पहले preformed है, और भले ही फार्म वैध है, तो आप झूठे लौटाने या रोकने से रोकें preventDefault()

और, एचटीएमएल 5 में आपके पास फॉर्म की मान्यता की जांच करने के लिए एक तरीका है: form.checkValidity() , तो आप में यह पता कर सकते हैं कि फ़ॉर्म आपके कोड में मान्य है या नहीं।

ठीक है, यहां डेमो है: http://jsbin.com/buvuku/2/edit

मुझे यकीन नहीं है कि यह मुझे इसके लिए खरोंच से टाइप करने के लिए लायक है, क्योंकि यह आलेख एक सूची में प्रकाशित है, यह समझाने में काफी अच्छा काम करता है। एमडीएन के पास एचटीएमएल फॉर्म और सत्यापन के लिए एक आसान गाइड भी है (एपीआई को कवर करना और संबंधित सीएसएस भी)

फ़ील्ड के लिए HTML5 सत्यापन जोड़ना या निकालना कुछ हद तक आसान है

  $('form').each(function(){ // CLEAR OUT ALL THE HTML5 REQUIRED ATTRS $(this).find('.required').attr('required', false); // ADD THEM BACK TO THE CURRENT FIELDSET // I'M JUST USING A CLASS TO IDENTIFY REQUIRED FIELDS $(this).find('fieldset.current .required').attr('required', true); $(this).submit(function(){ var current = $(this).find('fieldset.current') var next = $(current).next() // MOVE THE CURRENT MARKER $(current).removeClass('current'); $(next).addClass('current'); // ADD THE REQUIRED TAGS TO THE NEXT PART // NO NEED TO REMOVE THE OLD ONES // SINCE THEY SHOULD BE FILLED OUT CORRECTLY $(next).find('.required').attr('required', true); }); }); 

इस समस्या को हल करने का दूसरा तरीका:

 $('input').oninvalid(function (event, errorMessage) { event.target.focus(); }); 

मुझे चाल ढूंढना है: बस "लक्ष्य" टैग को हटा दें, फिर फॉर्म को मान्य करने और संकेत दिखाने के लिए एक सबमिट बटन का उपयोग करें, जावास्क्रिप्ट के जरिए फ़ॉर्म को मान्य करें, और फिर जो भी पोस्ट करें निम्नलिखित कोड मेरे लिए काम करता है:

 <form> <input name="foo" required> <button id="submit">Submit</button> </form> 

 <script> $('#submit').click( function(e){ var isValid = true; $('form input').map(function() { isValid &= this.validity['valid'] ; }) ; if (isValid) { console.log('valid!'); // post something.. } else console.log('not valid!'); }); </script> 

जब एक बहुत जटिल (विशेषकर अतुल्यकालिक) सत्यापन प्रक्रिया होती है, तो एक सरल समाधान होता है:

 <form id="form1"> <input type="button" onclick="javascript:submitIfVeryComplexValidationIsOk()" /> <input type="submit" id="form1_submit_hidden" style="display:none" /> </form> ... <script> function submitIfVeryComplexValidationIsOk() { var form1 = document.forms['form1'] if (!form1.checkValidity()) { $("#form1_submit_hidden").click() return } if (checkForVeryComplexValidation() === 'Ok') { form1.submit() } else { alert('form is invalid') } } </script>