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 một proxy với bản gốc val
chức năng.
chỉ cần thêm Mã này ở đâ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: here
(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 didn giá trị 't 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);
sống ví dụ cho điều đó: http://jsfiddle.net/5fSmx/1/
Nguồn
2014-05-13 15:46:34
thể trùng lặp của (http://stackoverflow.com/questions/ 2247386/jquery-textbox-valxxxx-không-gây-thay đổi-to-fire) –
Tiêu đề chính nó đã trả lời câu hỏi của tôi. Xác nhận tại ** [.change()] (https://api.jquery.com/change/) ** yellow "Lưu ý: Thay đổi giá trị của phần tử đầu vào bằng JavaScript, sử dụng .val() chẳng hạn, won ' t cháy sự kiện. " –