To stop an observer you have to call stop
method on the observer. By default observe_field
helper, creates an unnamed observer. You have to patch the helper to create a named observer.
Add this patch to your app/helpers/application_helper.rb
.
module ActionView::Helpers::PrototypeHelper
def observe_field(field_id, options = {})
poller_name, key = options.delete(:poller_name), "new Form.Element.Observer"
poller_name ? super :
super(field_id, options).gsub(Regexp.new(Regexp.escape(key)),
"var #{poller_name} = #{key}")
end
end
Create a named field observer
in your view:
<%= observe_field :word_word, :frequency => 0.25,
:poller_name => :word_word_poller
:function => "wordObserve('#{@word_str}')" %>
In java-script callback function, call word_word_poller.stop
to stop observing the field.
Reference
1) How to remove a Form.Element.Observer