आप val
फ़ंक्शन को मूल val
फ़ंक्शन के लिए प्रॉक्सी के साथ बदलकर ट्रिगर करने के लिए फ़ंक्शन को आसानी से ओवरराइड कर सकते हैं ।
अपने कोड में कहीं न कहीं इस कोड को जोड़ें (jQuery लोड करने के बाद)
(function($){
var originalVal = $.fn.val;
$.fn.val = function(){
var result =originalVal.apply(this,arguments);
if(arguments.length>0)
$(this).change(); // OR with custom event $(this).trigger('value-changed');
return result;
};
})(jQuery);
एक कार्य उदाहरण: यहाँ
(ध्यान दें कि यह हमेशा ट्रिगर होगा change
जब val(new_val)
मूल्य कहा जाता है, भले ही इसे वास्तव में नहीं बदला जाए।)
यदि आप परिवर्तन को केवल तभी ट्रिगर करना चाहते हैं जब मूल्य वास्तव में बदल जाता है, तो इस का उपयोग करें:
//This will trigger "change" event when "val(new_val)" called
//with value different than the current one
(function($){
var originalVal = $.fn.val;
$.fn.val = function(){
var prev;
if(arguments.length>0){
prev = originalVal.apply(this,[]);
}
var result =originalVal.apply(this,arguments);
if(arguments.length>0 && prev!=originalVal.apply(this,[]))
$(this).change(); // OR with custom event $(this).trigger('value-changed')
return result;
};
})(jQuery);
उसके लिए लाइव उदाहरण: http://jsfiddle.net/5fSmx/1/