40 lines
841 B
JavaScript
40 lines
841 B
JavaScript
|
// 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 );
|
||
|
|