Vous pouvez très facilement remplacer le val
fonction pour déclencher un changement, en les remplaçant par un proxy à l'original val
fonction.
il suffit d'ajouter Ce code quelque part dans votre document (après le chargement de jQuery)
(function($){
var originalVal = $.fn.val;
$.fn.val = function(){
var result =originalVal.apply(this,arguments);
if(arguments.length>0)
$(this).change();
return result;
};
})(jQuery);
Un exemple: ici
(Notez qu'il sera toujours déclencher change
lorsque val(new_val)
, même si la valeur n'a pas réellement changé.)
Si vous voulez déclencher un changement UNIQUEMENT lorsque la valeur réellement changé, utilisez celui-ci:
//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();
return result;
};
})(jQuery);
Exemple vivant pour que: http://jsfiddle.net/5fSmx/1/