2010-11-11 15 views
9

क्या एक कस्टम jquery मान्य विधि में गतिशील पैरामीटर को पारित करने का कोई तरीका है? विशेष रूप से, मैं 2 नियंत्रणों की तुलना करने का एक तरीका ढूंढ रहा था और तुलना के लिए किसी अन्य की वैध विधि को पास करना चाहता हूं।Jquery Validator गतिशील पैरामीटर्स

//Add method 
$.validator.addMethod("lowerInt", function(value, element, params) { 
      alert('inside method'); 
      if (isNaN(parseInt(params))) 
       return true; 
      else 
       return parseInt(value) < parseInt(params); 
     }, $.validator.format("Please enter a number smaller than {0}")); 

//Set validation 
$("#form1").validate({ 
    rules: { 
     lowInt: { 
      required: true, 
      integer: true, 
      lowerInt: 8 //I would like to pass a dynamic value here 
     } 
    } 
}); 

अगर मैं यह के रूप में ऊपर चलाने के लिए, यह एकदम सही ढंग से काम करता है:

यहाँ मैं वर्तमान में क्या है। यदि मैं 8 को नीचे से $ ('# highInt') में बदलता हूं। वैल(), ऐसा लगता है कि यह केवल एक बार निचले इंटरेक्ट फ़ंक्शन के लिए मान सेट करता है और इसे कभी अपडेट नहीं करता है। मुझे एहसास है कि मैं $ ('# highInt') कॉल करके विधि के अंदर मूल्य प्राप्त कर सकता हूं। वैल(), लेकिन यदि संभव हो तो मैं मूल्य को पास करना चाहूंगा।

उत्तर

15

मैं एक चयनकर्ता में मिलेगा, इसलिये इस तरह:

//Add method 
$.validator.addMethod("lowerInt", function(value, element, params) { 
    var hi = typeof params[0] == "string" ? 
      parseInt($(params[0]).val(), 10) : 
      params[0]; 
    if (isNaN(hi)) 
    return true; 
    else 
    return parseInt(value) < hi; 
}, $.validator.format("Please enter a number smaller than {0}")); 

//Set validation 
$("#form1").validate({ 
    rules: { 
    lowInt: { 
     required: true, 
     integer: true, 
     lowerInt: '#highInt' 
    } 
    } 
}); 

इस संस्करण में न तो कोई संख्या या एक चयनकर्ता ले जाएगा यह के रूप में संभव के रूप में लचीला बना रही है।

+1

सत्यापित करें विधि कुछ में फ़ंक्शन को कॉल इस उत्पादन संदेश 'कृपया #highInt से एक नंबर छोटे दर्ज' होगा? मैं उपयोगकर्ता को कुछ और दोस्ताना देने में सक्षम होना पसंद करूंगा। – jinglesthula

3

पैरामीटर को एक फ़ंक्शन बनाएं।

$("#form1").validate({ 
    rules: { 
     lowInt: { 
      required: true, 
      integer: true, 
      lowerInt: function(){ return $('#highInt').val(); } 
     } 
    } 
}); 

तो फिर तुम जैसे

var high = params[0](); 
संबंधित मुद्दे