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