我正在使用rails helper observe_field来观察文本字段的输入:
<%= observe_field :word_word, :frequency => 0.25, :function => "wordObserve('#{@word_str}')" %>
当文本字段输入变为某个值时,我想停止观察。我已经尝试了Event.stop()和Event.stopObserving(element,eventName,handler)但似乎都没有工作。有什么想法吗?
答案 0 :(得分:1)
要停止观察者,您必须在观察者上调用stop
方法。默认情况下,observe_field
帮助程序会创建一个未命名的观察者。您必须修补帮助程序以创建命名观察者。
将此修补程序添加到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
在视图中创建一个名为field observer
的内容:
<%= observe_field :word_word, :frequency => 0.25,
:poller_name => :word_word_poller
:function => "wordObserve('#{@word_str}')" %>
在java-script回调函数中,调用word_word_poller.stop
以停止观察该字段。
<强>参考强>