I need to use JQuery in order to detect the changes on a text file, so some ajax is invoked.
The trick is that I don't really want to bind this action to the blur or keyup events; The former is too cumberstone for the user and the second is "too inmediate": the user types new keys before the ajax call has been completed, so the user experience isn't great (so the answer on this SO question does not apply on my case).
What I need is some code that checks whether the field value has changed, but periodically (i.e. every 0.5 seconds). I'd like to use the same code on several fields, calling different ajax functions, with different frequencies, so reuse is really a plus here.
On Rails I had observe_field (internally uses Prototype's Form.Element.observer, I think) that did just this. How can I accomplish the equivalent thing on JQuery?
I ended up rolling my own jquery plugin.
It is (loosely) based on Mic's implementation.
Created a github project for it:
http://github.com/splendeo/jquery.observe_field
Main differences with Mic are:
Quick snippet:
$(function() {
// Executes a callback detecting changes with a frequency of 1 second
$("#item1").observe_field(1, function( ) {
alert('Change observed! new value: ' + this.value );
});
});
Here's a solution that use a simple JS function: How do I grab the value from an html form input box as its being entered?
You can use the $(...).focus(...) call to use it with jquery if you like.
At the onfocus on the field, there is a periodic check if the value has changed, if so, the callback function "after" is called.
When leaving the field, at the onblur the polling is stopped.
This will work even if the user makes some indirect changes like undo/redo or copy/paste in the field.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With