read
Here’s a quick tidbit. I was asked if I had a quick way to track changes on an old, existing page in an application. Once a Cancel button was clicked, or the user tried to close the browser, the developer wanted to determine if anything changed, and alert the user if there was a change.
So I cooked up this quick snippet to track those changes using ExtJS/Sencha and JavaScript.
window.dirty = {
items: [],
add: function(itemToCheck) {
var found = false;
Ext.each(this.items, function(item, index) {
if (item.id === itemToCheck.id) found = true;
});
if (!found) this.items.push(itemToCheck);
}
};
Ext.each(Ext.query("input, select, textarea"), function(item, index) {
Ext.get(this).on("change", function() {
window.dirty.add(this);
});
});
This bit of code will add hooks for an onChange event for all select, input and textarea boxes on a page and track if they get changed from their original value. Then all the developer has to do is check for window.dirty.items.length > 0 to see if there are “dirty” fields on the page.
Happy coding!