Hello all, I need a little help with something.  We are trying to set up a form 
for entering 
address information.  We want the user to enter the city name into a text input 
field and 
then be presented with a list of possible city, state, zip codes to select 
from.  Once the 
select the row from the list it then closes the list and keeps the city name in 
the city field 
and adds the state and zip info to there fields. 

I would LOVE to do this with one of the autocomplete components available but 
neither 
one willl perform as needed, we have spent a great deal of time trying. So I am 
trying to 
fool the user into thinking that they are using an autocomplete box.  The way I 
kind of 
have working is:

 I created a textinput field called city, when the user types a city in and 
tabs out I have an 
invisible list field that I turn visible appearing below it that is going out 
to the database 
looking up that city name and bringing back a list of city, states and zips 
that match.  But 
its not quite working correctly.  It is bringing up the list, but the tab order 
is sending it to 
the next field not the list field like I want.  I did make the list field next 
in the tabindex 
order, but I think the issue is it is not visible until after the cursor has 
moved on.  Also it 
appears the list is appearing before all the data is and it is kind of out of 
order and when I 
scroll it is messing things up.  When I do pick an item it does properly close 
the list and 
save some data to the fields but it is not the row I picked. 

I will include the code for the text input, list and function the lookup 
performs to see if 
anyone has any suggestions.  Thanks in advance.

<mx:TextInput width="159" id="city" tabIndex="3" x="10" y="72" 
focusOut="cityLookup
()"/>

<mx:List tabIndex="4" x="10" y="94" width="159" visible="false" height="177" 
id="cityPicker" dataProvider="{cityPicklistData}" doubleClickEnabled="true" 
doubleClick="citySelect()"></mx:List>

public function cityLookup():void {
        if( city.text!="" && city.text.length > 2 ){
                srv.url = parentApplication.dataServerURL + "batch";
                cityPicker.visible = true;
                
                var infoModel:XML=
                <batch>
                        <query-zipcode.zipcode><city>{city.text}</city></query-
zipcode.zipcode>
                </batch>                                
                ;
                // prepare the request parameters
                srv.addEventListener(ResultEvent.RESULT, 
                        // SERVER RESPONSE RECEIVED
                        function (evt : ResultEvent ):void {
                                if(srv.lastResult.batch.zipcode != null) {
                                        rawCityPicklistData = 
srv.lastResult.batch.zipcode.record;
                                        cityPicklistData = new Array();
                                        for each(var item:Object in 
rawCityPicklistData){
                                                
cityPicklistData.push({label:item.city+", "+item.state+" 
"+item.zipcode, data:item.id});
                                        }
                                        currentState = "cityLookup";
                                        cityPicker.executeBindings(false);
                                        cityPicker.invalidateDisplayList();
                                }
                        }
                );
                srv.addEventListener(IOErrorEvent.IO_ERROR , loadIOError); // 
This is an 
application global function
                //setApplicationBusy();
                srv.send(infoModel);
        }
}


Reply via email to