I have changed a little of my code and have gotten the onchange code to run, but Internet Explorer does not hide the dropdown list after selecting a value unless selected a second time. What can I do to change this behavior?
var idList = "<%=addIDStringBuffer.toString()%>"; var idArray = idList.split(","); $(document).ready(function() { for(var i=0; i<idArray.length; i++) { $("#city"+idArray[i]).autocomplete( [ <%=cityList.toString()%> ], { delay: 100, selectFirst: false max: 10, scrollHeight: 500 } ); } }); Could someone please advise? On Jan 17, 1:35 pm, Mark Thompson <[EMAIL PROTECTED]> wrote: > Anybody have a simpler or more detailed bit of help for the onchange > problem I have? > > On Jan 14, 4:33 pm,MarkThompson<[EMAIL PROTECTED]> wrote: > > > Thanks, but that is completely over my head at this point. I am not > > even perfectly clear on what "X = $(this)" means or why "var x = this" > > is needed here. > > > MarkThompson > > > On Jan 14, 1:56 pm, "Diego A." <[EMAIL PROTECTED]> wrote: > > > > I work around the same issues with several other plugins as well... > > > I'll explain how I solve it, maybe that will help others with the same > > > problem. > > > > * I add my own 'layer' to the initialization of the plugin. * > > > > Instead of... > > > $('input.autocomplete').autocomplete({ /* options */ }); > > > > I do this... > > > $('input.autocomplete').each(function(){ > > > var x = this, X = $(this); > > > // do stuff... > > > X.autocomplete({ > > > callback: function(event, data, formatted){ > > > // do stuff... > > > X.change(); > > > } > > > }); > > > > }); > > > > My 'layer' gets a little more complicated because I implement my own > > > integration methods using the metadata plugin, but this should give > > > you an idea of how to get started... > > > > On Jan 14, 6:24 pm, dustyt <[EMAIL PROTECTED]> wrote: > > > > > Thanks for the input, Sheldon. > > > > > What you have said sounds logical, but I think that I may be > > > > experiencing a different problem because what I am referring to is > > > > when something is selected in the dropdown (which puts the selected > > > > value into the input box) and then the input loses focus, onchange > > > > apparently does not fire. I would think that this lack of firing > > > > should not be the default case, so that it would mirror the behavior > > > > of a select box, or, at least, that the default could be readily > > > > overridden or that some other event could be tied to in order to have > > > > similar behavior to a select box. > > > > > Also, I would prefer to have the updatePartyAddress function called > > > > only when the input loses focus and has changed its value and > > > > therefore do not much like the idea of tying the updatePartyAddress > > > > function to onkeyup. > > > > > I can possibly see how to correctly call the updatePartyAddress > > > > function directly if theautocompletefunction selectItem() is called > > > > when an item is selected in anautocompletedropdown and onItemSelect > > > > points to a function that I can have call updatePartyAddress and I > > > > have a reference to the particular input box that has had its value > > > > selected. So far, though, I do not know how to programmatically refer > > > > to the input box that has had its value changed so that I can call > > > > updatePartyAddress with a reference to this input box (and with a > > > > value that now has to be extracted from its name but that was directly > > > > written into the previously used onchange JavaScript function--unless > > > > I can call the onchange function directly). > > > > >MarkThompson > > > > > On Jan 11, 1:40 pm, Sheldon Griffin <[EMAIL PROTECTED]> wrote: > > > > > > Keep in mind that the onchange event for a text input box is only > > > > > fired when the input loses focus. Tying your updatePartyAddress > > > > > function to onkeyup instead of onchange is one way to get it to fire > > > > > after every letter. > > > > > > That being said, it should be firing if you type in some letters and > > > > > click on the page outside the box - if it's still not firing in that > > > > > situation, it's a different problem. > > > > > > Sheldon Griffin > > > > > > On Jan 10, 1:16 pm, dustyt <[EMAIL PROTECTED]> wrote: > > > > > > > I am trying to replace a previous bit of html that managed input by > > > > > > both an input and a select box with a single input field using > > > > > > jquery.autocomplete.js, but I have not been able to getautocomplete > > > > > > to use the onchange JavaScript code used by that previous bit of > > > > > > html. > > > > > > I have gottenautocompleteto display and select all the values > > > > > > correctly in multiple analogous fields on the same form, but I do > > > > > > not > > > > > > know how to have it trigger the code that was previously run under > > > > > > an > > > > > > onchange event. Unfortunately, I do not understand much of the > > > > > > jquery > > > > > > andautocompletecode, and I am only moderately more familiar with > > > > > > JavaScript. > > > > > > > I am sorry if this is somewhat of a duplicate message. I posted a > > > > > > message last night under the same nickname, dustyt, but from a > > > > > > different account, [EMAIL PROTECTED] I cannot now access the > > > > > > group from this account (I can read messages--although I do not see > > > > > > my > > > > > > posting from last night--but the group wants me to join before > > > > > > posting, yet I am already a member) due to some weirdness with > > > > > > Google > > > > > > and signing in. When I joined the group last night, it gave me > > > > > > access > > > > > > to the Members, but now says that I must be a manager to do so or > > > > > > that > > > > > > jquery_en is not a group. More weirdness. > > > > > > > Here is a bit of the current relevant code: > > > > > > <input class="text" id="city<%=addID%>" type="text" > > > > > > name="city<%=addID%>" size="30" maxlength="120" value="<c:out > > > > > > value="$ > > > > > > {partyAddress.city}"/>" onchange="javascript: > > > > > > updatePartyAddress(this, > > > > > > <%=addID%>);" > > > > > > > ... > > > > > > var idList = "<%=addIDStringBuffer.toString()%>"; > > > > > > var idArray = idList.split(","); > > > > > > > $(document).ready(function() { > > > > > > for(var i=0; i< idArray.length; i++) { > > > > > > $("#city"+idArray[i]).autocompleteArray( > > > > > > [ > > > > > > <%=cityList.toString()%> > > > > > > ], > > > > > > { > > > > > > delay:10, > > > > > > minChars:1, > > > > > > matchSubset:1, > > > > > > onItemSelect:selectItem, > > > > > > onFindValue:findValue, > > > > > > autoFill:true, > > > > > > maxItemsToShow:10 > > > > > > } > > > > > > ); > > > > > > } > > > > > > > }); > > > > > > > Perhaps something to do with selectItem is needed? > > > > > > Any help would be appreciated. Thanks. > > > > > > >MarkR.Thompson