ref: master
plugins/stoa/public/javascripts/jquery.observe_field.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
// jquery.observe_field.js (function( $ ){ jQuery.fn.observe_field = function(frequency, callback) { frequency = frequency * 1000; // translate to milliseconds return this.each(function(){ var $this = $(this); var prev = $this.val(); var check = function() { var val = $this.val(); if(prev != val){ prev = val; $this.map(callback); // invokes the callback on $this } }; var reset = function() { if(ti){ clearInterval(ti); ti = setInterval(check, frequency); } }; check(); var ti = setInterval(check, frequency); // invoke check periodically // reset counter after user interaction $this.bind('keyup click mousemove', reset); //mousemove is for selects }); }; })( jQuery ); |