2013-10-23 4 views
29

के आधार पर सशर्त नियम क्या यह संभव है आसानी से सेटअप jQuery के साथ एक सशर्त शासन को मान्य, कोjQuery सत्यापित करें - सेट उपयोगकर्ता चयन

सीधे शब्दों में कहें मैं, कुछ तर्क जो कहते हैं जोड़ने कोशिश कर रहा हूँ अगर चेकबॉक्स 'ए' टिक कर रहा है - फिर फ़ील्ड 'ए' पूरा हो जाना चाहिए, यदि चेकबॉक्स 'बी' पूरा हो गया तो फ़ील्ड 'बी 1' & 'बी 2' पूरा होना चाहिए।

उदाहरण के लिए यदि 'पेपैल' नाम वाला चेकबॉक्स चेक किया गया है - तो 'paypal_address' नाम का फ़ील्ड पूरा होना चाहिए।

<script type="text/javascript"> 
$(document).ready(function() { 

$('#checkout-form').validate({ 
    rules: { 
     first_name: { 
      minlength: 2, 
      required: true 
     }, 
     last_name: { 
      minlength: 2, 
      required: true 
     }, 
     address_1: { 
      minlength: 2, 
      required: true 
     }, 
     address_2: { 
      minlength: 2, 
      required: true 
     }, 
     post_code: { 
      minlength: 2, 
      required: true 
     },    
     email: { 
      required: true, 
      email: true 
     }, 
     terms: { 
      required: true, 
     } 
    }, 
    errorPlacement: function(error, element) { 
     element.addClass('error'); 
    },   
    highlight: function (element) { 
     $(element).addClass('nonvalid') 
      .closest('.form-group').removeClass('error'); 
    }, 
    success: function (element) { 
     //element.addClass('valid') 
      //.closest('.form-group').removeClass('error'); 
      element.remove('error'); 
    } 
}); 

अद्यतन

रोहित से नीचे पद्धति का उपयोग करना मैं लगभग मिल गया है इस पूरी तरह से .. मेरे प्रपत्र तीन चेक बॉक्स (केवल एक हो सकता है वर्किंग:

मेरे मौजूदा तर्क इस प्रकार है चयनित) 1. Paypal 2. बैंक 3. जांच/चेक

Paypal जाँच की जाती है, तो (डिफ़ॉल्ट रूप से यह है) तो केवल 'paypal_email_address' छी है एलडी आवश्यक है, यदि बैंक चेक किया गया है तो 'account_number' & 'sort_code' फ़ील्ड आवश्यक हैं & अंत में यदि चेक चेक किया गया है तो 'check_payable_field' आवश्यक है।

if (payment_method == 'paypal') { 
    paypal_checked = true; 
    } else if (payment_method == 'bank-transfer') { 
    bank_checked = true; 
    paypal_checked = false; 
    } else if (payment_method == 'cheque') { 
    cheque_checked = true; 
    paypal_checked = false; 
    } 
;

// मैं इस अब तक $ (".paymentMethod") .on ("क्लिक", function() { वर PAYMENT_METHOD = $ (this) .val() मिल गया है

});

उत्तर

71

jQuery मान्य वास्तव में सीधे इस dependency expressions का उपयोग कर का समर्थन करता है,:

rules: { 
    .... 
    field_a: { 
     required: false, 
     checkA: true 
    }, 
    .... 
} 

एक नजर डालें।

तुम सब इस तरह से अपनी सत्यापित करें विकल्पों को बदल करने की जरूरत है:

$('#myform').validate({ 
    rules: { 
     fieldA: { 
      required:'#checkA:checked' 
     } 
    } 
}); 

यह है कि!

+0

धन्यवाद यह एक शॉट देगा! :) – Zabs

+0

लिंक के लिए बहुत बहुत धन्यवाद। अब मुझे पता है कि एक चयनकर्ता है: अगर हम रिमोट नियमों का उपयोग करते हैं तो – Dummy

+0

भरें, तो यह काम नहीं करेगा। यह केवल आवश्यक संपत्ति की जांच करेगा लेकिन रिमोट सामान्य प्रवाह के रूप में काम करेगा। – Varadha31590

3

संपादित करें: मुझे पहले प्रश्न ठीक से समझ में नहीं आया, मैं इसके लिए क्षमा चाहता हूं: पी लेकिन, यहां एक समाधान है जो काम करना चाहिए।

क्या आप जाँच कर रहा है या नहीं, चेकबॉक्स चेक किया जाता है और फिर इस तरह के रूप paypal_address के लिए आवश्यक नियम सेट कर सकते हैं:

var checked = false; 
$("#paypalCheckbox").on("click", function() { 
     checked = $('#paypalCheckbox').is(':checked'); 
    }); 

और फिर नियम में आप जोड़ सकते हैं:

paypal_address : { 
required: checked 
} 
+0

हाय दोस्त - मेरे पास सत्यापन ठीक है - मैं जो करने की कोशिश कर रहा हूं उसके पास अतिरिक्त नियम हैं जो उपयोगकर्ता ने चुना है। ई।जी यदि उपयोगकर्ता 'पेपैल' चेकबॉक्स चेक करता है - तो 'paypal_address' नामक फ़ील्ड को पूरा करने की आवश्यकता है। अगर वे इसका चयन नहीं करते हैं, तो वे paypal_address फ़ील्ड में एक मान्य ईमेल पता जोड़ने की आवश्यकता के बिना इस क्षेत्र को छोड़ सकते हैं। – Zabs

+1

उत्तर अपडेट किया गया :) – Rohit

+0

धन्यवाद मैं इसे एक शॉट दूंगा – Zabs

5

आप एक कस्टम सत्यापन विधि का उपयोग कर सकते हैं। उदाहरण के लिए:

jQuery.validator.addMethod("checkA", function(value, element) { 
    return YourValidationCode; // return true if field is ok or should be ignored 
}, "Please complete A"); 

फिर अपने नियमों में इसका इस्तेमाल करते हैं: http://jqueryvalidation.org/jQuery.validator.addMethod/

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