คุณสามารถแทนที่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/