2012-12-19 5 views
8

JQuery सत्यापन प्लगइन संस्करण 1.9.0 की रिलीज के बाद, छुपा फ़ील्ड स्वचालित रूप से सत्यापन जांच [source] से छोड़े गए हैं।JQuery प्रमाणीकरण: छिपे हुए फ़ील्ड को मान्य करना

release notes के अनुसार, इसके आसपास जाने का तरीका सत्यापन कार्य में ignore: [] सेट करके है।

संस्करण 1.10.0 का उपयोग कर, मैं display: none या visibility: hidden का उपयोग करके छुपाए गए इनपुट फ़ील्ड के लिए काम करने में असमर्थ हूं।

मेरे मान्यता वर्गों का उपयोग किया जाता है (जैसे, class="required") और मान्यता समारोह काफी बुनियादी है:

JQuery

$("form").validate({ 
    ignore: [], 
    errorPlacement: function(error, element) { 
     error.appendTo($('#error-message')) 
    }, 
    invalidHandler: function() { 
     //do something 
    }, 
    submitHandler: function() { 
     //do something else 
    } 
}); 

कार्य उदाहरण: http://jsfiddle.net/fbCVY/

कर सकते हैं किसी को भी बिंदु बाहर मैं कहाँ गलत जा रहा हूँ?

+0

जब मैं फ़ायरफ़ॉक्स 17.0.1 में jsfiddle चलाता हूं, तो 'सबमिट' बटन हमेशा कंसोल में "कोई त्रुटि नहीं" दिखाता है - यहां तक ​​कि इनपुट फ़ील्ड को छिपाने वाले सीएसएस को हटाने के बाद भी। क्या मुझे कुछ याद आ रही है, या क्या वास्तव में सत्यापन में असफल होने के लिए जेएसफ़िल्ड स्थापित नहीं है? – TLS

उत्तर

6

मैं तुम दोनों के लिए एक अनूठा id और एक अद्वितीय nameinput टैग से प्रत्येक के लिए गुण प्रदान करने के लिए इतना है कि सत्यापन प्लगइन क्षेत्रों पा सकते हैं और उन्हें अलग बता सकते हैं की जरूरत है। दो "छिपे हुए" फ़ील्ड सत्यापन में विफल नहीं हैं क्योंकि फ़ॉर्म पर पहला फ़ील्ड गुजरता है, और इसका परिणाम दूसरे दो क्षेत्रों के लिए उपयोग किया जा रहा है।

+1

[यहां एक काम कर रहा है jsfiddle] (http://jsfiddle.net/fbCVY/1/) – TLS

+0

+1 भयानक - थोड़ा अजीब लगता है कि वे आईडी पर निर्भर हैं। समाधान के लिए धन्यवाद! –

+2

यह सिर्फ नाम है कि –

2

नियमों के साथ प्रयास करें:

$("form").validate({ 
    ignore: "", 
    rules: { 
     name: ["aa", "ee"] 
    }, 
    errorPlacement: function(error, element) { 
     error.appendTo($('#error-message')) 
    }, 
    invalidHandler: function() { 
     //do something 
    }, 
    submitHandler: function() { 
     //do something else 
    } 
}); 

Jsfiddle

नमस्ते।

+0

धन्यवाद - यह वास्तव में मेरे लिए आवश्यक नियम नहीं है, मैं 'नाम' विशेषता को छोड़ रहा था जो समस्या उत्पन्न कर रहा था (इसलिए आपका jsfiddle काम करता है, लेकिन ऐसा इसलिए है क्योंकि आपने 'नाम' विशेषता जोड़ दी है नियमों की आवश्यकता के बजाय इनपुट के लिए): http://jsfiddle.net/fbCVY/14/ –

+1

ठीक है, विशेषता "नाम" इसे हल करती है। –