2012-05-06 8 views
6

जब भी मैं require_from_group का उपयोग करता हूं तो यह अन्य सभी मान्यताओं को अक्षम करता है। कोई विचार क्यों?Jquery। Validate requ_from_group

इसके अलावा "टेलीफ़ोन" और "मोबिटेल" समूह बनाने का कोई तरीका है और require_from_group पर लागू करें?

$(document).ready(function(){ 
    $("#fncMain").validate(
    { 
    /*groups:{Call:"Telefon Mobitel"},*/ 
    rules:{ 
     Davcna:{required:true,exactlength:5, digits:true}, 
     Idzav:{required:true,exactlength:5, digits:true}, 
     Maticna:{required:true,exactlength:5, digits:true}, 
     Telefon:{require_from_group: [1,".callme"]}, 
     Mobitel:{require_from_group: [1,".callme"]} 
    }, 
    messages:{ 

    }} 
    ); 
    }); 

अन्य सभी फ़ील्ड यहां शामिल नहीं हैं "आवश्यक" कक्षा का उपयोग करें। अगर मैं require_from_group "टेलीफ़ोन" और "मोबिटेल" पर लागू नियमों को हटाता हूं तो अन्य सभी फ़ील्ड सत्यापन ठीक काम करते हैं।

सहायता के लिए धन्यवाद।

संपादित एचटीएमएल: http://cl.ly/29391q0Q3G231T2I380m (बहुत लंबा इसे यहाँ पोस्ट करने के लिए)

+1

क्या आप इस फ़ॉर्म के लिए HTML साझा कर सकते हैं, कम से कम यह इन नियमों से संबंधित है? यानी कक्षाओं में 'कॉलमे', आदि – Ryley

+0

@Ryley मैंने अपनी HTML (फॉर्म भाग) पोस्ट की है। मेरी पोस्ट के संपादन की जांच करें। :) – John

+0

मुझे लगता है कि आपको एक बग मिला है ... – Ryley

उत्तर

5

@Tats_innit एक कस्टम require_from_group यहां पोस्ट: https://stackoverflow.com/posts/13127475

बाहर कर देता है, यह भी एक लॉग इन GitHub बग संस्करण के साथ जारी किया गया था ठीक करता है jquery.validation के लिए में require_from_group का 1.10.0।

GitHub मुद्दा: require_from_group disables other rules

smileyanp @ GitHub उनके समाधान में इस पोस्ट जहां उन्होंने @ Tats_innit के समारोह पुन: उपयोग किया है और एक test कि पता चला है कि यह सही ढंग काम करता है और अन्य नियमों पर सत्यापन निष्क्रिय नहीं होती बनाई उद्धृत require_from_group से पहले परिभाषित किया गया।

इस पोस्ट में एक समय सेवर के रूप में इस तरह के एक छोटे से विस्तार के लिए googling के 3 बजे जला दिया के रूप में यहाँ है ..

ठीक:

बस additional-method-1.10.js को अपडेट करने या बाद additional-method-1.10.js लोड होने के लिए इस कोड को निष्पादित (समारोह को ओवरराइट करने के लिए)।

jQuery.validator.addMethod("require_from_group", function(value, element, options) { 
    var numberRequired = options[0]; 
    var selector = options[1]; 
    var fields = $(selector, element.form); 
    var filled_fields = fields.filter(function() { 
    // it's more clear to compare with empty string 
    return $(this).val() != ""; 
    }); 
    var empty_fields = fields.not(filled_fields); 
    // we will mark only first empty field as invalid 
    if (filled_fields.length < numberRequired && empty_fields[0] == element) { 
    return false; 
    } 
    return true; 
// {0} below is the 0th item in the options field 
}, jQuery.format("Please fill out at least {0} of these fields.")); 
+0

इस उत्तर के संस्करण के साथ इस फ़ंक्शन के 1.11.1 संस्करण के व्यवहार की तुलना में मैंने देखा है कि यह संस्करण लाल संस्करण के रूप में लालची पुनर्मूल्यांकन नहीं करता है। यह संस्करण फॉर्म सबमिट पर पुन: सत्यापित करता है, लेकिन शिपिंग एक सत्यापन पत्र को साफ़ करता है जैसे ही फ़ील्ड की न्यूनतम संख्या में मूल्य (ऑनकीप) होता है। अगर किसी को भी उनके उपयोग के मामले के लिए लालची पुनर्मूल्यांकन की आवश्यकता होती है तो केवल एक एफवाईआई। – jinglesthula

2

संपादित: यह वास्तव में लगता है कि यह ठीक तरह संस्करण 1.12.0 में शामिल किया गया है और आप यहां इसके लिए CDN संकेत मिल सकते हैं: http://jqueryvalidation.org/

और संदर्भ के लिए:

http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/jquery.validate.js 
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/jquery.validate.min.js 
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/additional-methods.js 
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/additional-methods.min.js 

मुझे ऊपर दिए गए समाधान को ढूंढने से पहले मुझे यह कोड नीचे मिला, इसलिए मेरी सलाह है कि नीचे दिए गए कोड को अपने जेएस फ़ाइल में चिपकाए जाने के बजाय उपरोक्त संदर्भित सीडीएन लिंक का उपयोग करें।

better fix out on GitHub now (बहुत नीचे स्क्रॉल करें) है, जिसे मैंने यहां कॉपी किया है।यह मेरा काम नहीं है और गिटहब उपयोगकर्ता sfreytag जिन्होंने इसे लिखा है, एक एसओ योगदानकर्ता प्रतीत नहीं होता है, मैं बस इसे एसओ में ले जाना चाहता था, जो इसे पाते हैं कि इसे धागे के माध्यम से खोदना नहीं है GitHub:

jQuery.validator.addMethod("require_from_group", function(value, element, options) { 
    var validator = this; 
    var selector = options[1]; 
    var validOrNot = $(selector, element.form).filter(function() { 
     return validator.elementValue(this); 
    }).length >= options[0]; 

    if(!$(element).data('being_validated')) { 
     var fields = $(selector, element.form); 
     fields.data('being_validated', true); 
     fields.valid(); 
     $(element.form).valid(); 
     fields.data('being_validated', false); 
    } 
    return validOrNot; 
}, jQuery.format("Please fill at least {0} of these fields.")); 

मैं अब तक इस के साथ सीमित परीक्षण किया है, लेकिन यह (पहले की तरह किसी भी गैर "require_from_group" सत्यापन के माध्यम से उड़ाने के बजाय) के रूप में आप उम्मीद थी, सभी सत्यापन होते हैं काम कर रहा है, इसलिए मैं अब तक इसके साथ खुश हूं। मैंने इसे अपने जेएस कोड के शीर्ष पर वैधकर्ता घोषणा के बाद जोड़ा:

$.validator.setDefaults({ 
    debug: true, 
    success: "valid" 
}); 

jQuery.validator.addMethod("require_from_group", function(value, element, options) { 
    var validator = this; 
    var selector = options[1]; 
    //continuation of code... 
संबंधित मुद्दे