instance method
observe_field
Ruby on Rails 2.2.3
Since v2.2.3 Last seen in v2.3.18Available in: v2.2.3 v2.3.18
Signature
observe_field(field_id, options = {})
Observes the field with the DOM ID specified by field_id and calls a callback when its contents have changed. The default callback is an Ajax call. By default the value of the observed field is sent as a parameter with the Ajax call.
Example:
# Generates: new Form.Element.Observer('suggest', 0.25, function(element, value) {new Ajax.Updater('suggest',
# '/testing/find_suggestion', {asynchronous:true, evalScripts:true, parameters:'q=' + value})})
<%= observe_field :suggest, :url => { :action => :find_suggestion },
:frequency => 0.25,
:update => :suggest,
:with => 'q'
%>
Required options are either of:
:url-
url_for-style options for the action to call when the field has changed. :function-
Instead of making a remote call to a URL, you can specify javascript code to be called instead. Note that the value of this option is used as the body of the javascript function, a function definition with parameters named element and value will be generated for you for example:
observe_field("glass", :frequency => 1, :function => "alert('Element changed')")
will generate:
new Form.Element.Observer('glass', 1, function(element, value) {alert('Element changed')})
The element parameter is the DOM element being observed, and the value is its value at the time the observer is triggered.
Additional options are:
:frequency-
The frequency (in seconds) at which changes to this field will be detected. Not setting this option at all or to a value equal to or less than zero will use event based observation instead of time based observation.
:update-
Specifies the DOM ID of the element whose innerHTML should be updated with the XMLHttpRequest response text.
:with-
A JavaScript expression specifying the parameters for the XMLHttpRequest. The default is to send the key and value of the observed field. Any custom expressions should return a valid URL query string. The value of the field is stored in the JavaScript variable
value.Examples
:with => "'my_custom_key=' + value" :with => "'person[name]=' + prompt('New name')" :with => "Form.Element.serialize('other-field')"
Finally
:with => 'name'
is shorthand for
:with => "'name=' + value"
This essentially just changes the key of the parameter.
:on-
Specifies which event handler to observe. By default, it’s set to “changed” for text fields and areas and “click” for radio buttons and checkboxes. With this, you can specify it instead to be “blur” or “focus” or any other event.
Additionally, you may specify any of the options documented in the Common options section at the top of this document.
Example:
# Sends params: {:title => 'Title of the book'} when the book_title input # field is changed. observe_field 'book_title', :url => 'http://example.com/books/edit/1', :with => 'title' # Sends params: {:book_title => 'Title of the book'} when the focus leaves # the input field. observe_field 'book_title', :url => 'http://example.com/books/edit/1', :on => 'blur'
Parameters
-
field_idreq -
optionsopt = {}
Source
# File actionpack/lib/action_view/helpers/prototype_helper.rb, line 556
def observe_field(field_id, options = {})
if options[:frequency] && options[:frequency] > 0
build_observer('Form.Element.Observer', field_id, options)
else
build_observer('Form.Element.EventObserver', field_id, options)
end
end
Defined in actionpack/lib/action_view/helpers/prototype_helper.rb line 556
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActionView::Helpers::PrototypeHelper