I noted the speed for ie6 is veeeeeeeeery slow, but for FF is very good =p
On Nov 20, 2007 7:37 AM, Gordon <[EMAIL PROTECTED]> wrote: > > $(document).ready (function () > { > var searchBox = $('<input type="text" name="addrSearch" > id="addrSearch" />'); > var addrList = $('#storedAddresses li'); > var matchErr = $('<li class="noMatch">No matches found</li>'); > var addrStrings = []; > > // Cache the contents of each list item > addrList.each (function () > { > addrStrings.push ($(this).text ().toLowerCase ()); > }); > > //console.log (addrStrings); > > $('#storedAddresses').append (matchErr); > matchErr.hide (); > $('#scroller').before (searchBox); > searchBox.keyup (function () > { > // Convert input value to lower case, strip non-alphanumeric > characters, strip multiple white space and split into an array of > search terms > var searches = this.value.toLowerCase ().replace (/[^a-z0-9 > ]/g, ' > ').replace (/\s+/g, ' ').split (' '); > // Match elements against the supplied list of search words > var elemsToShow = addrList.filter (function (index) > { > for (var thisSearch = 0; thisSearch < > searches.length; thisSearch+ > +) > { > if (addrStrings [index].match (searches > [thisSearch]) === null) > { > return (false); > } > } > return (true); > }); > // Show matches, hide non-matches > var elemsToHide = addrList.not (elemsToShow); > elemsToHide.hide (); > elemsToShow.show (); > // If the search resulted in 0 matches then display an error > message > elemsToShow.length > 0? matchErr.hide () : matchErr.show (); > }); > }); > > #storedAddresses is a HTML list of stored delivery addresses. > > #scroller is of no significance to the script and is simply a point in > the DOM into which the search text box can be inserted. > > I was worried about speed, as the main loop does quite a lot of work, > but it seems to remain responsive even with around 150 addresses in > the address list. It also provides the behaviour I want, all the > typed words have to be in the address for a match, but the order of > the words in the search box is unimportant. > > > On Nov 19, 9:54 pm, Gordon <[EMAIL PROTECTED]> wrote: > > Thanks for the suggestion, but it came too late. I've now already > > written something that seems to work pretty well. Will post source > > later for comments and in the hopes someone else will find it useful. > > > > On Nov 19, 6:49 pm, Sean O <[EMAIL PROTECTED]> wrote: > > > > > Gordon, > > > > > I think the quickSearch plugin:http://rikrikrik.com/jquery/quicksearch/ > > > > > will help you. > > > > > SEAN O > > > ______________www.sean=o.com > > > > > Gordon-35 wrote: > > > > > >http://www.vulgarisoip.com/2007/06/29/jquerysuggest-an-alternative-jq... > > > > demonstrates a plugin that's really close to what I want, it will pick > > > > up on elements where the word entered isn't the first word in the > > > > strings being searched. Unfortunately, it still requires all the > > > > words to be in the order they appear in the strings and doesn't seem > > > > to match when words are ommited. Try "eastern", "warbler" and > > > > "eastern warbler" to see what I mean. If this plugin matched on > > > > "eastern warbler" or even on "warbler eastern" it would be pretty much > > > > just what I needed functionality wise. Additionally it doesn't need > > > > any ajax support as the UL with all the addresses in it is already on > > > > the page. I just need to process that list, and use it as the basis > > > > of the autocomplete. > > > > > > On Nov 19, 10:16 am, Gordon <[EMAIL PROTECTED]> wrote: > > > >> I currently have a brief to develop a system to help people find > > > >> addresses in a list loaded into a web page. At the moment they're > > > >> displayed as a single long list (a ul), and the oser clicks the one he > > > >> wants to use. The problem is that in some cases this list can run to > > > >> hundreds of entries. > > > > > >> The first plan was to simply have a button to click on the page that > > > >> invokes the browser's ctrl-f behaviour, but there doesn't seem to be a > > > >> sensible cross-browser way to do it. > > > > > >> My second idea was to use jQuery and one of the autocomplete plugins, > > > >> convert the list into the data the autocomplete plugin needs to > > > >> operate on and suggest addresses as users type into the field. This > > > >> seemed a better approach but then I hit a problem that the > > > >> autocomplete plugins that I've found so far all seem to search on > > > >> exact phrases, which is not going to be very useful. Addresses in the > > > >> list are in the format <recipient name>, <address>, <postcode> so a > > > >> user would have to start by entering the name of the recipient > > > >> followed by the address and post code for the autocomplete to work. > > > >> If the user was to start with a postcode or street address, as most > > > >> users would probably consider sensible, then the autocomplete would > > > >> return no results. > > > > > >> What I really need is something that works in a similar manner to the > > > >> autocomplete plugins I've found so far, but that doesn't care about > > > >> the order of the words typed into the search box. The only constraint > > > >> should be that the strings being matched against contain all the words > > > >> typed. > > > > > >> For example, if an address is listed as "Mister Foobar, 123 Fake > > > >> street, Quuxville, AS1 23D, then the autocomplete plugin would suggest > > > >> that address if the user typed in "fake street as1", or "fake > > > >> foobar". Are there any autocumplete plugins that support doing this? > > > > > -- > > > View this message in > > > context:http://www.nabble.com/Autosuggest-tf4835224s27240.html#a13842444 > > > Sent from the jQuery General Discussion mailing list archive at > > > Nabble.com. > -- []´s Jean www.suissa.info Ethereal Agency www.etherealagency.com