In a previous post I showed how to get around a bug in Prototype that was ignoring the "on" parameter of the observe_field function. The solution I originally posted no longer works with the latest version of Rails and Prototype. Although the documentation for observe_field received a facelift, somehow the Rails team still missed the fact that the :on function doesn't work with the current version of Prototype. Or maybe its the Prototype guys we should be after here. :-)
The new fix requires a change to both prototype.js and a small Rails core update.
I will start with the update to prototype.js. Search for Abstract.EventObserver (around line 3632 in my version). That should now read
Abstract.EventObserver = Class.create({
initialize: function(element, callback, trigger) {
this.element = $(element);
this.callback = callback;
this.trigger = trigger;
this.lastValue = this.getValue();
if (this.element.tagName.toLowerCase() == 'form')
this.registerFormCallbacks();
else
this.registerCallback(this.element, this.trigger);
},
onElementEvent: function() {
var value = this.getValue();
if (this.lastValue != value) {
this.callback(this.element, value);
this.lastValue = value;
}
},
registerFormCallbacks: function() {
