इसलिए मैं थोड़ा गहराई में जा रहा हूं कि यह काम क्यों नहीं करता क्योंकि मैं उस तरह का व्यक्ति हूं जो रात को सोए बिना नहीं सो सकता। मैं jQuery के मान्य 1.10 और Microsoft jQuery के विनीत मान्य 2.0.20710.0 का उपयोग कर रहा हूं जो 1/29/2013 को प्रकाशित हुआ था।
मैंने jQuery Validate में setDefaults पद्धति की खोज करके शुरुआत की और इसे अनअमाइंड किए गए फ़ाइल की लाइन 261 पर पाया। यह सब कार्य वास्तव में आपकी json सेटिंग्स को मौजूदा में विलय कर देता है $.validator.defaults
जो कि इनिशियल प्रॉपर्टी के साथ ": छिपा हुआ" होने के साथ-साथ jQuery Validate में परिभाषित अन्य चूक के साथ शुरू होता है। तो इस बिंदु पर हमने अनदेखा कर दिया है। अब देखते हैं कि इस चूक संपत्ति को कहां संदर्भित किया जा रहा है।
जब मुझे कोड के माध्यम से पता चलता है कि कहां $.validator.defaults
संदर्भित किया जा रहा है। मैंने देखा कि केवल एक फॉर्म वैलिडेटर के लिए कंस्ट्रक्टर द्वारा उपयोग किया जा रहा था, लाइन 170 में jQuery के वैमानिक फ़ाइल को मान्य करता है।
// constructor for validator
$.validator = function( options, form ) {
this.settings = $.extend( true, {}, $.validator.defaults, options );
this.currentForm = form;
this.init();
};
इस बिंदु पर एक सत्यापनकर्ता सेट की गई किसी भी डिफ़ॉल्ट सेटिंग्स को मर्ज कर देगा और इसे प्रपत्र सत्यापनकर्ता के साथ संलग्न करेगा। जब आप उस कोड को देखते हैं जो वैरिफाइंग, हाइलाइटिंग, अनहाइलाइटिंग आदि कर रहा है, तो वे सभी प्रॉपर्टी को इग्नोर करने के लिए validator.settings ऑब्जेक्ट का उपयोग करते हैं। इसलिए हमें यह सुनिश्चित करने की आवश्यकता है कि अगर हम सेटडफ़ॉल्ट्स पद्धति के साथ अनदेखी करना चाहते हैं तो यह $ ("फ़ॉर्म") से पहले घटित होना चाहिए। मान्य () कहा जाता है।
यदि आप Asp.net MVC और विनीत प्लगइन का उपयोग कर रहे हैं, तो आप जावास्क्रिप्ट को देखने के बाद महसूस करेंगे कि दस्तावेज़ को पहले से ही कहा जाता है। मैंने डॉक्यूमेंट में पहले से ही अपने सेटफॉल्ट को भी बुला लिया है। पहले से ही ब्लॉक है जो स्क्रिप्ट के बाद निष्पादित करने जा रहा है, jquery मान्य और विनीत है क्योंकि मैंने उन स्क्रिप्ट को html में परिभाषित किया है जो उसमें कॉल है। तो मेरे कॉल में स्पष्ट रूप से सत्यापन के दौरान छिपे हुए तत्वों को छोड़ने की डिफ़ॉल्ट कार्यक्षमता पर कोई प्रभाव नहीं था। यहां कुछ विकल्प हैं।
विकल्प 1 - आप के रूप में जुआन मेल्लाडो ने कहा कि दस्तावेज़ के बाहर कॉल हो सकती है। पहले से ही स्क्रिप्ट लोड होते ही निष्पादित हो जाएगी। मुझे इसके समय के बारे में निश्चित नहीं है क्योंकि ब्राउज़र अब समानांतर स्क्रिप्ट लोड करने में सक्षम हैं। अगर मैं सिर्फ सतर्क हूं तो कृपया मुझे सुधारें। इसके अलावा, शायद इसके आस-पास भी रास्ते हैं लेकिन मेरी जरूरतों के लिए मैं इस रास्ते पर नहीं गया।
विकल्प 2 ए - मेरी नज़र में सुरक्षित शर्त सिर्फ $.validator.setDefaults({ ignore: '' });
दस्तावेज़ के अंदर की जगह है। पहले से ही घटना $("form").data("validator").settings.ignore = "";
। यह अनदेखी की गई संपत्ति को संशोधित करेगा जो वास्तव में jQuery के द्वारा उपयोग किया जाता है जब दिए गए फॉर्म के लिए आपके तत्वों पर प्रत्येक सत्यापन करते हैं।
विकल्प 2 बी - कोड को थोड़ा और देखने के बाद आप $("form").validate().settings.ignore = "";
प्रॉपर्टी को इग्नोर करने के तरीके के रूप में भी इस्तेमाल कर सकते हैं। कारण यह है कि जब वैध फ़ंक्शन को देखते हैं तो यह देखने के लिए जांचता है कि क्या $.data()
फ़ंक्शन के माध्यम से फार्म तत्व के लिए पहले से ही एक मान्य ऑब्जेक्ट संग्रहीत किया गया है। यदि इसे फॉर्म एलिमेंट के साथ स्टोर की गई वैलिडेटर ऑब्जेक्ट मिल जाती है तो यह केवल एक और बनाने के बजाय वैधीटर ऑब्जेक्ट को वापस कर देती है।