Ezra Zygmuntowicz
8/7/2006 7:19:00 PM
On Aug 7, 2006, at 11:00 AM, Shanan Suding wrote:
> Hi,
>
> Yet another newbie here... I'm writing an appliction in Rails, and
> I've Ajaxified my select boxes so they update dynamically. I used
> the "observe_field" method to monitor changes to my select box. I
> find that it's kind of erratic... it updates constantly and makes
> the selection for me, based on where my mouse happens to be
> hovering when it does its observation. Not very user friendly.
> I'd much rather the onChange event, but I'm not sure exactly how to
> write the syntax for using the event.
>
> Here's my code as it is now:
>
> <select id="product[proddesc_pk]" name="product[proddesc_pk]">
> <%= options_from_collection_for_select(
> Product.find_all, "proddesc_pk", "prod_name"
> ) %>
> </select></p>
> <%= observe_field("product[proddesc_pk]",
> :frequency =>0.25,
> :update => "component_id_list",
> :url => { :action => :fill_component_box},
> :with => "'id='+value")
> %>
>
> How would I go about changing that code so that it updates based on
> an onChange event, rather than the observation?
>
> Any help would be greatly appreciated!
>
> Thanks,
> ~ Shanan
>
Here is how you can use the onchange event which is much nicer to
work with:
<%= select_tag( 'product[proddesc_pk]',
options_from_collection_for_select(
Product.find_all, "proddesc_pk", "prod_name") ,
:onchange => remote_function(:with =>
"'proddesc_pk ='+value",
:loading => "Element.show('loading-indicator1')",
:url => { :action => :
fill_component_box } ) %>
Doing it that way will put the value in params[: proddesc_pk] for
you . You can then respond with rjs to fill whatever you need to fill.
Cheers-
-EZra