2009-06-10 7 views
18

मैंने jquery के validator प्लगइन के लिए एक विधि बनाई है, जो रिमोट नियम की तरह काम करता है। अंतर यह है कि मैं एक गतिशील त्रुटि संदेश प्रदर्शित करना चाहता हूं (AJAX प्रतिक्रिया के आधार पर)।jquery validator addmethod कस्टम संदेश

jQuery.validator.addMethod("duplicate", function(value, element, params) { 
    var object_settings = this.settings; 
    params.data[$(element).attr("name")] = value; 
    $.post(params.url, params.data, function(response) { 
     if (response == 'true'){ return true; } 
     else { 
      object_settings.messages[element.name] = response; 
      return false; 
     } 
    }, 'text'); 
}, ''); 

यह काम करता है ... एक तरह से .... यह संदेश सेट, लेकिन यह शुरू में प्रदर्शित नहीं करता है (यदि आप क्षेत्र को दूसरी बार मान्य, संदेश प्रदर्शित किया जाता है)।

कोई सुझाव?

(शायद दूरदराज के नियम इस कार्यक्षमता प्रदान करता है ... मैं दस्तावेज में कुछ भी नहीं मिला)

उत्तर

15

यहाँ समाधान .... वस्तु की showErrors फ़ंक्शन को कॉल करने के लिए आवश्यक है:

jQuery.validator.addMethod("duplicate", function(value, element, params) { 
    var validator = this; 
    params.data[element.name] = value; 
    $.post(params.url, params.data, function(response) { 
     if (response == 'true'){ return true; } 
     else { 
      var errors = {}; 
      errors[element.name] = response; 
      validator.showErrors(errors); 
      return false; 
     } 
    }, 'text'); 
}, ''); 

jquery.validate.js (लाइनों 917 - 919) में से "दूरस्थ" लिया

+4

डिफ़ॉल्ट त्रुटि संदेश कस्टम संदेश लिखने पर है, जब मैं ऐसा करता हूं। – aqs

9

रूप में अच्छी तरह यह करने के लिए समाधान के लिए देख रहा था, और यह पाया ...

मूल पूर्व में पर्याप्त, अगर आप इस लाइन बदलने के लिए:

object_settings.messages[element.name] = response; 
इस के लिए

:

$.validator.messages.duplicate = response; 

यह मेरे लिए काम करता है। मैंने इसे यहां पाया: http://blogs.teamb.com/craigstuntz/2009/01/15/37923/

+0

+1 'शोएरर्स' को कॉल करने से बेहतर लगता है –

6

मैंने साइट http://blogs.teamb.com/craigstuntz/2009/01/15/37923/#comment-125774 साइट में उल्लिखित प्रक्रिया का पालन किया है और सफल हुआ है।

आपको गतिशील संदेश के साथ विधि को कॉल करना होगा, ताकि वह उस संदेश को प्रदर्शित करेगा। उदाहरण

$.validator.addMethod("validatePremium", function(value, element, param) { 

    if(Condition)  

    { 
     $.validator.messages.validatePremium = "your message here"; 
     //enter code here 
     //... 
     return false; 
    } 

    }, $.validator.messages.validatePremium); 
3

के लिए यह मेरे लिए काम किया

var errorMsg = '', $valid = false; 
$.validator.addMethod("methodName",function(val, elem){ 
    $.ajax({ 
     url:'your_script.php', 
     type:"POST", 
     dataType:"json", 
     data : {}, 
     success:function(response){ 
     if(response.success == false){ 
      errorMsg = response.msg; 
      $valid = response.success; 
     } 
     else{ 
      $valid = true; 
     } 
     } 
    }); 
    $.validator.messages["methodName"] = errorMsg; 
    return $valid; 
},''); 

इस मामले "नकल" दोनों स्थानों में अपनी विधि नाम के साथ "methodName" प्रतिस्थापित करना सुनिश्चित करें (addMethod समारोह 1 आर्ग और addMethod फ़ंक्शन बॉडी $ .validator.messages ["methodName"])

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