Bạn có thể dễ dàng ghi đè val
chức năng để kích hoạt thay đổi bằng cách thay thế nó bằng proxy thành val
chức năng ban đầu .
chỉ cần thêm mã này vào đâu đó trong tài liệu của bạn (sau khi tải 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);
Một ví dụ làm việc: ở đây
(Lưu ý rằng điều này sẽ luôn kích hoạt change
khi val(new_val)
được gọi ngay cả khi giá trị không thực sự thay đổi.)
Nếu bạn muốn kích hoạt thay đổi CHỈ khi giá trị thực sự thay đổi, hãy sử dụng giá trị này:
//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);
Ví dụ trực tiếp cho điều đó: http://jsfiddle.net/5fSmx/1/