2010-10-07 14 views
8

मेरे पास एक ऐसा फॉर्म है जो ज़िप कोड को न्यूनतम/अधिकतम लंबाई के आधार पर मान्य करता है। मैं के लिए ज़िप मिनट ऑस्ट्रेलिया को छोड़कर सभी देशों जो यहाँ 4. होने की जरूरत है के लिए 5 अंकों का होना जरूरत है क्या इम साथ परेशानी हो रही है:कस्टम jQuery सत्यापन .addMethod

$.validator.addMethod(
    "AusZip", 
    function(value, element) { 
     if ($("#Country").val("Aus") && ("#PostalCode").length < 4)) { 
     return false; 
    } else return true; 
}, 
"Australian Zip Code Must Be at least 4 Digits"); 
तो नियमों में

rules: { 
    PostalCode: { 
     required: true, 
     minlength: 5 //for all countries except AUS 
     AusZip: true // for Aus 
    } 
} 

लंबाई है जाने का रास्ता नहीं है?

उत्तर

8

मैं यह सोचते हैं रहा हूँ सभी सत्यापन नियमों से गुजरना होगा, जिसका अर्थ है कि आपके minlength हमेशा असफल हो जायेगी अगर आप 4.

की लंबाई इसके अलावा, आप एक $("#PostalCode").length से पहले भूल रहे है।

यह लाइन #Country का मान सेट करता है।

$("#Country").val("Aus") 

आप प्राप्त मूल्य चाहते हैं, और यह "Aus" लिए की तुलना करें।

$("#Country").val() === "Aus" 

minlength को हटाने का प्रयास करें, और अपना कस्टम फ़ंक्शन बदल दें।

इस प्रयास करें:

संपादित करें: बदल दिया है, ताकि आप 2 प्रमाणकों की है।

एक सत्यापित करता है कि काउंटी ऑस्ट्रेलिया और है मूल्य की लंबाई कम से कम 4

अन्य पुष्टि करता है कि काउंटी ऑस्ट्रेलिया नहीं है और मूल्य की लंबाई कम से कम 5 है।

$.validator.addMethod("AusZip", function(value, element) { 
    var isAus = $("#Country").val() === "Aus"; 

    if (isAus && value.length < 4) { 
     return false; 
    } else return true; 

}, "Australian Zip Code Must Be at least 4 Digits"); 

$.validator.addMethod("NonAusZip", function(value, element) { 
    var isNotAus = $("#Country").val() !== "Aus"; 

    if (isNotAus && value.length < 5) { 
     return false; 
    } else return true; 

}, "Zip Code Must Be at least 5 Digits"); 


$('form').validate({ 
    rules: { 
     PostalCode: { 
      required: true, 
      AusZip: true, 
      NonAusZip: true 
     } 
    } 
});​ 

या यदि आप एक कस्टम मान्यता देश के आधार पर संदेश की जरूरत नहीं है, तो आप ऐसा कर सकते हैं:

$.validator.addMethod("GlobalZip", function(value, element) { 
    var isAus = $("#Country").val() === "Aus"; 

    if ((isAus && value.length < 4) || value.length < 5) { 
     return false; 
    } else return true; 

}, "Zip Code is not long enough"); 

$('form').validate({ 
    rules: { 
     PostalCode: { 
      required: true, 
      GlobalZip: true 
     } 
    } 
});​ 
+0

इसलिए यदि मैं पोस्टलकोड नियमों से "मिनीलेथेंथ" को हटा देता हूं तो क्या इसे अभी भी सभी के लिए 5 की लम्बाई की आवश्यकता होगी? –

+0

यह एक त्रुटि देता है "errorFirstWord" कंसोल में किसी कारण से परिभाषित नहीं किया गया है। –

+0

यह चाहिए। कोशिश करो। यह लाइन * ऑस्ट्रेलिया है और चार से कम है, या पांच से कम * है। '(isAus && $ pCode.length <4) || $ pCode.length <5' – user113716

संबंधित मुद्दे