2012-11-12 13 views
22

चलो कहते हैं कि मैं एक कस्टम की तरह jQuery मान्य करने के लिए AddMethod करते हैं , और इससे कोई मूल्य प्राप्त करें। मुझे यहां क्या समझ नहीं आ रहा है?AddMethod साथ गतिशील jQuery मान्य त्रुटि संदेश तत्व के आधार पर

+2

[दस्तावेज़ से एटियन] (http://docs.jquery.com/Plugins/Validation/Validator/addMethod#namemethodmessage), 'addMethod' एक फ़ंक्शन को तीसरे के रूप में ले सकता है (यानी। 'संदेश') परम। देखें कि जब आप कोई फ़ंक्शन पास करते हैं, और उसके अंदर 'console.log (यह) 'होता है तो क्या होता है। एक अच्छा मौका है कि 'यह' वह तत्व होगा जिसमें आप रुचि रखते हैं। या, हो सकता है कि तत्व एक परम के रूप में पारित हो, जैसा कि आपके पास अन्य कार्य के लिए है। – meetamit

उत्तर

55

सत्यापनकर्ता स्रोत कोड देख से, मुझे लगता है कि यह यह करना चाहिए:

$.validator.addMethod('min-length', function (val, element) { 
    return this.optional(element) || val.length >= $(element).data('min'); 
}, function(params, element) { 
    return 'The field cannot be less than than ' + $(element).data('min') + ' length.' 
}); 

अपने मूल कोड में, संदेश स्ट्रिंग बंद के भीतर नहीं है; बंद करने का दूसरा तर्क addMethod है, त्रुटि संदेश तीसरा तर्क है।

+0

बहुत बहुत धन्यवाद बार्मार! आपको पता नहीं था कि आप ऐसा कर सकते हैं :) इसके अलावा आप सही हैं कि यह बंद नहीं है, मेरी गलती है। –

+8

बस जो मैं खोज रहा था। एक छोटा कदम आगे, आप सत्यापन फ़ंक्शन के अंदर एक कस्टम त्रुटि संदेश बना सकते हैं, और इसे तत्व के डेटा में टाइप कर सकते हैं, उदाहरण के लिए '$ (तत्व) .डेटा ('त्रुटि', '... कस्टम संदेश ...')' और फिर इसे 'वापसी $ (तत्व) .डेटा (' त्रुटि ')' – patricksurry

+1

'के माध्यम से संदेश फ़ंक्शन में पुनर्प्राप्त करें एक अन्य जोड़ यह है कि यदि कहीं और परिभाषित संदेश है, तो नियमसेट पर, उदाहरण के लिए, यह 3 पैरामीटर' addMethod ' 'अनदेखा किया जाएगा। मैंने सोचा कि वैधकर्ता पहले पैरामीटर का उपयोग करेगा, फिर डिफ़ॉल्ट 'शून्य' या खाली स्ट्रिंग लौटाए जाने पर डिफ़ॉल्ट का उपयोग करें। – ps2goat

3

सबसे पहले, मैं बाड़मेर के उत्तर की सराहना करता हूं।

यदि आप सोचते हैं, तो आप इसके किसी भी योग्य मूल्य के साथ किसी भी jQuery सत्यापन संदेश का उपयोग कर सकते हैं, आप केवल संदेश उदाहरणों को कॉल कर सकते हैं।

यहाँ कोड

  jQuery.validator.addMethod("custom_min", function(value, element, param) { 
       value = replaceAll(value, ',' , ''); 
       return this.optional(element) || value >= param; 
      },jQuery.validator.messages.min); 

jQuery सत्यापन में है

jQuery('#form_id').validate({ 
    rules: { 
    'field_name': { 
     required: true, 
     number: true, 
     custom_min: 1000 
    } 
}); 

तो अगर आप 1000 की तुलना में कम कुछ दर्ज यह आप संदेश, त्रुटि फेंक होगा "1000 से अधिक मान डालें (राशि जिसे आपने सत्यापन में रखा है) "। यह विधि तेज होगी यदि आपकी सत्यापन को किसी भी मौजूदा विधि के किसी भी संशोधन की आवश्यकता है या आप इसे कई भाषा के साथ विकसित कर रहे हैं।

+1

मैंने आपका उत्तर ऊपर उठाया है क्योंकि यह प्रस्तुत उदाहरण को हल करता है सवाल में लेकिन बरमार का जवाब एक और सामान्य समाधान देता है, जो मैं इस पृष्ठ में उतरने के लिए देख रहा था। – cosan

1

दुर्घटना से इस अर्ध को मिला। परिणाम के आधार पर मेरे संदेश बहुत गतिशील हैं। तो मैं वैध कॉल करने से ठीक पहले मैं तत्व में एक विशेषता डेटा-msg = "मेरा कस्टम संदेश" जोड़ता हूं। सत्यापनकर्ता कि लेने देगा:

err_msg = 'My custom message'; 
$('#my_element_id').attr('data-msg', err_msg); 
$('#my_form_id').validate().element('input[name=\'my_element_name\''); 

jquery.validate.js

0
पार्टी यहाँ के लिए देर

में customDataMessage के तहत कुछ कोड संदर्भ मिले, लेकिन यह मेरे लिए काम करने लगता है:

jQuery.validator.addMethod("minDate", function(value, element, param) { 
    var inputDate = new Date(value); 
    return (inputDate >= param) 
    }, function(param, element) { 
     return 'Enter a date greater than or equal to ' + $.datepicker.formatDate("M d, yy", new Date(param)); 
}); 

जहां minDate मान को पहले इस तरह कुछ सत्यापित करने के लिए नियंत्रण पर सेट किया गया है:

$('form:first').validate({ 
    rules: { 
     "date-filed": { 
      minDate: new Date(2000,0,0) 
     }, 
...