Ajax - Updating Field with Selection

Hi all, I have two fields in a form. One text field non asociated to the model for the user type a value. the view is: <%= text_field_tag 'item_cod','', :size => 3 %>

Other a field with a select list with codes, names for the user select from. The view is:

<%= f.select :item_id, Item.select_list, :size => 40 %>

item_id is the real field of my model.

I want the following behavior. 1. If the user type a code into the text_field tag -> Update the list so the user view the corresponding name of the item they type. 2. If the user select from the list -> Update the text field with the code corresponding to the name selected. (this is the easy part)

My form works fine with one Observe field for the :item_id list but I can't do work the point 1.

Thanks in advance, FF

You probably need to put the select into a partial and then refresh the partial when you return from the observe field. I would probably go with an ajax "on blur" with the text field as this would put a bit less load on the server.

I already have an onblur with the text field and another with the select field. This works fine, but I don`t know how to represent in the select list the corresponding name of the code typed in the text field.

Put the select into a partial then do this:

This is what I came up with a while back to re populate a select box after a DB add.

Mop is just my main Table / form.

When you add the person to the db then do this:

@mop = Mop.find(params[:id])

    a = Contact.all.collect{|p| [ p.id ] }     b = @mop.contacts.all.collect{|p| [ p.id ] }     c = a-b     ar = Array.new     c.each{|arr|       arr.each{|p|         ar << p       }     }     @contacts = Contact.find(:all, :conditions => ["id IN (?)", ar]).collect {|p| [ p.name, p.id ] }

In the RJS do this:

page[:contact_id].replace :partial => 'updateContactList', :locals => { :contacts => @contacts, :mop => @mop, :person => @person }

Partial similar to this:

<%= select('contact', 'id', @contacts, {:prompt => 'Select Contact'}, { :onchange => remote_function( :url => { :controller => 'contacts', :action => "ajaxshowcontact", :id => @mop},                                 :with => "'contactid=' + this.value" ) } ) %>