Javascript 停止“观察”字段的观察

Javascript 停止“观察”字段的观察,javascript,ruby-on-rails,prototypejs,Javascript,Ruby On Rails,Prototypejs,我使用rails helper observe_字段观察文本字段的输入: <%= observe_field :word_word, :frequency => 0.25, :function => "wordObserve('#{@word_str}')" %> 0.25,:function=>“wordObserve('.{@word\u str}')”%> 当textfield输入变成某个值时,我想停止观察。我尝试了Event.stop()和Event.sto

我使用rails helper observe_字段观察文本字段的输入:

<%= observe_field :word_word, :frequency  => 0.25, :function => "wordObserve('#{@word_str}')" %>
0.25,:function=>“wordObserve('.{@word\u str}')”%>

当textfield输入变成某个值时,我想停止观察。我尝试了Event.stop()和Event.stopObserving(元素、eventName、处理程序),但两者似乎都不起作用。有什么想法吗?

要停止观察者,必须对观察者调用
stop
方法。默认情况下,
observe\u字段
helper创建一个未命名的观察者。必须修补辅助对象才能创建命名的观察者

将此修补程序添加到您的
app/helpers/application\u 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
在视图中创建一个命名的
现场观察者

<%= observe_field :word_word, :frequency  => 0.25, 
                  :poller_name => :word_word_poller
                  :function => "wordObserve('#{@word_str}')" %>
0.25,
:poller\u name=>:word\u word\u poller
:function=>“wordObserve('.{@word_str}')”%>
在java脚本回调函数中,调用
word\u word\u poller.stop
停止观察字段

参考

(一)