नोट:
यह प्रश्न jQuery.validate() (संस्करण 1.5) का एक बहुत पुराना संस्करण है। यह प्लगइन अब ऐसा करने के लिए एक अंतर्निहित समाधान प्रदान करता है: .rules()
method जिसका उपयोग इसके बजाय किया जाना चाहिए। मैं इस सवाल को छोड़ रहा हूं और ऐतिहासिक उद्देश्यों के लिए अपने मूल रूप में उत्तर दे रहा हूं, जो किसी विरासत साइट को बनाए रखने की आवश्यकता है जो jQuery और jQuery.validate() के नवीनतम संस्करणों में अपग्रेड करने में असमर्थ है।मैं किसी पृष्ठ से jQuery सत्यापन नियम कैसे जोड़ूं, हटा सकता हूं या स्वैप कर सकता हूं?
मेरे पास एक ऐसा फॉर्म है जो इनपुट तत्वों को दृश्यमान करता है। मैं को केवल फॉर्म पर दृश्य तत्वों को मान्य करना चाहता हूं।
मुझे सही तरीके से कार्य करने में मुश्किल हो रही है। मैं गैर-दृश्य तत्वों के लिए वैधता अक्षम करना चाहता हूं और मुझे ऐसा करने का सबसे अच्छा तरीका पता नहीं लग रहा है। मेरे कोड के साथ क्या गलत हो सकता है, या मेरे दृष्टिकोण की कोई सराहना की जाएगी।
$("form").rules("remove")
कॉलिंग सभी मौजूदा सत्यापन नियमों स्पष्ट करने के लिए:जब दृश्यता चालू किए जाने पर, मैं कुछ चीजें कोशिश की है। यह एक "अपरिभाषित" जावास्क्रिप्ट अपवाद फेंकता है।
- दृश्य तत्वों के लिए
$("form").validation(...options...)
पर कॉल करके, उम्मीद है कि यह नियमों को ओवरराइट करेगा। यह केवल पहले समूह को अनुमति देता है जो काम के लिए मान्य है। दूसरा पैनल मान्य नहीं किया जा सकता है। - नई
validation()
विधि को कॉल करने से पहले सबमिट हैंडलर को अनबाइंड करना। ऐसा नहीं किया जो मैंने सोचा था। यह सभी सत्यापन (प्रतीत होता है) स्थायी रूप से हटा देता है और फॉर्म सत्यापन के बिना सबमिट करता है। - सत्यापनकर्ता को फिर से कॉल करने का प्रयास करने से पहले
$.removeData($('form'), 'validator')
के साथ सत्यापन ऑब्जेक्ट को साफ़ करना। यह भी काम नहीं करता है। - यह इसलिए कई का उपयोग कर
<form />
टैग सवाल से बाहर है के बाद से उस पृष्ठ टूट जाएगा, एक ASP.NET साइट में है।
मैं इस काम को कैसे बना सकता हूं इस पर स्टंप किया गया हूं। आप http://jsbin.com/ucibe3
पर मेरे पास एक पूर्ण कामकाजी डेमो देख सकते हैं, या इसे http://jsbin.com/ucibe3/edit
पर संपादित कर सकते हैं। मैंने इसे पर पर खींचने की कोशिश की है जो कि बग का कारण बनता है।
मेरा कोड (पूरा काम कर पेज के लिए लिंक के ऊपर उपयोग) के प्रमुख पीस हैं
HTML:
<td id="leftform">
Left Form<br />
Input 1: <input type="text" name="leftform_input1" /><br />
Input 2: <input type="text" name="leftform_input2" /><br />
<input type="submit" name="leftform_submit" value="Submit Left" />
</td>
<td id="rightform" style="visibility:hidden">
Right Form<br />
Input 1: <input type="text" name="rightform_input1" /><br />
Input 2: <input type="text" name="rightform_input2" /><br />
<input type="submit" name="rightform_submit" value="Submit Right" />
</td>
जावास्क्रिप्ट:
$('#toggleSwitch').click(function() {
if ($('#leftform').css("visibility") !== "hidden") {
$('#leftform').css("visibility", "hidden");
$('#rightform').css("visibility", "visible");
$('form').validate({
rules: {
rightform_input1: { required: true },
rightform_input2: { required: true }
},
messages: {
rightform_input1: "Field is required",
rightform_input2: "Field is required"
}
});
} else {
$('#rightform').css("visibility", "hidden");
$('#leftform').css("visibility", "visible");
$('form').validate({
rules: {
leftform_input1: { required: true },
leftform_input2: { required: true }
},
messages: {
leftform_input1: "Field is required",
leftform_input2: "Field is required"
}
});
}
});
क्षमा करें मुझे दूसरे उत्तर के साथ निशान याद आया, मैंने अपनी पोस्ट में एक संभावित समाधान के लिए एक लिंक जोड़ा है- उम्मीद है कि यह मदद करता है। –
2014 - कई सत्यापनकर्ता प्लगइन्स अब मौजूद हैं और, हालांकि मैं एक शिक्षित अनुमान लगा सकता हूं, यह स्पष्ट नहीं है कि यह प्रश्न किस प्लगइन को संदर्भित करता है। एक लिंक अप फ़ॉन्ट उपयोगी होगा। –
@ Roamer-1888 अच्छा बिंदु। मैंने प्लगइन निर्दिष्ट करने के लिए प्रश्न और उत्तर अपडेट किया है, साथ ही यह संस्करण जो इस प्रश्न के रूप में लागू होता है और उत्तर प्लगइन के अप्रचलित संस्करण को संदर्भित करता है और अब उतना प्रासंगिक नहीं है। –