2011-10-26 8 views
12

heyho,jQuery फार्म सत्यापित करें प्लगइन: क्षेत्र 1 के बराबर नहीं उतारने का 2

मैं निम्नलिखित समस्या में फंस: मैं कि एक उपयोगकर्ता क्षेत्रों "उपयोगकर्ता नाम" और "ईमेल" एक ही मूल्यों के लिए चुन सकते हैं रोकने की कोशिश । मैं jquery फॉर्म मान्य प्लगइन का उपयोग कर रहा हूं (http://bassistance.de/jquery-plugins/jquery-plugin-validation/)

बहुत अच्छा होगा अगर कोई मुझे रास्ता दिखा सकता है, तो कृपया मेरा कोड यहां देखें: पहले से

// validate form  
$("#signupform").validate({ 

    rules: { 
     username: { 
      required: true, 
      minlength: 2, 
      remote: "/_misc/formcheck/username.cfm" 
     }, 
     password1: { 
      required: true, 
      minlength: 5 
     }, 
     password2: { 
      required: true, 
      minlength: 5, 
      equalTo: "#password1" 
     }, 
     email: { 
      required: true, 
      email: true, 
      remote: "/_misc/formcheck/email.cfm" 
     }, 
     email2: { 
      required: true, 
      email: true, 
      equalTo: "#email" 
     }, 
     usage: "required"      
    }, 
    messages: { 
     username: { 
      required: "please username!!", 
      minlength: "username at least 2 chars" 
     }, 
     password1: { 
      required: "please password!", 
      minlength: "password at least 5 chars" 
     }, 
     password2: { 
      required: "please password", 
      minlength: "password at least 5 chars", 
      equalTo: "password fields have to match" 
     }, 
     email: "validate email please!",    
     email2: { 
      required: "please provide correct email address!",    
      equalTo: "email fields must match!" 
     }, 
     usage: "please check my terms!" 
    }, 

धन्यवाद, michbeck

उत्तर

20

आप एक कस्टम विधि उपयोगकर्ता नाम और ईमेल मूल्यों की जाँच जोड़ सकते हैं और उस क्षेत्र के लिए मान्यता जोड़ सकते हैं।

डेमो - http://jsfiddle.net/2hA8M/8/

उदाहरण -

विधि -

$.validator.addMethod("user_email_not_same", function(value, element) { 
    return $('#name').val() != $('#email').val() 
}, "* User and Email should not match"); 

मान्यकरण -

rules : { 
    username : { 
     user_email_not_same: true 
    } 
}, 
+0

आपको बहुत धन्यवाद, यह सामान्य रूप से काम करेगा, लेकिन मेरी समस्या यह है कि जब उपयोगकर्ता उपयोगकर्ता नाम (मेरे फॉर्म में पहला फ़ील्ड) भरता है तो ईमेल-फ़ील्ड अभी भी खाली है, इसलिए मैंने इसे चारों ओर बदलने की कोशिश की: \t \t नियम: { \t \t \t उपयोगकर्ता नाम: { \t \t \t \t आवश्यक: सच है, \t \t \t \t MINLENGTH: 2, \t \t \t \t दूरस्थ: "/ _misc/formcheck/usernam e.cfm " \t \t \t}, \t \t \t ईमेल: { \t \t \t \t आवश्यक: सच है, \t \t \t \t ईमेल: सच है, \t \t \t \t दूरस्थ:"/_misc/formcheck/ईमेल।CFM ", \t \t \t \t user_email_not_same: सच \t \t \t}, मेरे लिए इस तरह, एक और संकेत काम नहीं करता है – michbeck

+0

एक डेमो संलग्न यह अभी भी अपने खाली अगर काम करना चाहिए के रूप में करता है, तो खाली की आवश्यकता है।। असफल हो जाते हैं और भले ही सत्यापन को भरने वाले मानों से निकाल दिया जाता है, मान को खाली से मेल नहीं करना चाहिए। – Jayendra

+0

आपको बहुत धन्यवाद, हल :-) – michbeck

8

यह और अधिक लचीला हो सकता है:

$.validator.addMethod("notEqualTo", function (value, element, param) 
{ 
    var target = $(param); 
    if (value) return value != target.val(); 
    else return this.optional(element); 
}, "Does not match"); 

कॉल:

rules: { 
    username: { 
     required: true, 
     minlength: 2, 
     remote: "/_misc/formcheck/username.cfm", 
     notEqualTo: "#emailId-or-anyValidJquerySelector" 
    } 
} 

नमूना: http://jsfiddle.net/4AdWR/1/

या सीधे HTML में:

<input type="text" name="username" notEqualTo="#emailId-or-anyValidJquerySelector" minlength="2" class="required" /> 

नमूना: http://jsfiddle.net/B2hWn/1/

और यह भी सम्मान करता है आप के लिए आवश्यक/वैकल्पिक पिछले सत्यापन ;)

+0

यह बहुत अच्छा है, क्या HTML गुणों में equalTo के लिए सत्यापन संदेश सेट करने का कोई तरीका है? –

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