header

Použitie jQuery autocomplete pre vytvorenie zoznamu miest

titulok
Autor: Ivan Šulek, dátum: May 30, 2010 5:30:25 AM

Funkcia autocomplete už dávno nie je len doménou vyhľadávačov. Jej reálne využitie je aj pri vypĺňaní údajov z určitého zoznamu. Keď túto funkciu spojíme so zoznamom miest, ktorý získame parsovaním dát z geonames.org, získame praktickú pomôcku pri vypĺňaní objednávkových či registračných formulárov.

Na adrese http://www.geonames.org/export/geonames-search.html sa nachádza kompletný popis parametrov pre túto službu. Implementácia pomocou jQuery autocomplete je jednoduchá. Jediným problémom je absencia dokumentácie pre JSON výstup, no na internete je obrovské množstvo tutoriálov a návodov ako pracovať s JSON dátami v tomto plugine. Okrem samotného pluginu budeme samozrejme potrebovať aj jQuery knižnicu. Poslednú verziu stiahneme na adrese http://jquery.com/.

Podla dokumentácie geonames.org pre získanie aktuálneho zoznamu slovenských miest sú pre nás zaujímavé parametre name_startsWith čo je hľadanie podla začiatku reťazca, country, ktorým nastavíme obmedzenie na krajinu, v tomto prípade SK(Slovensko), lang - jazyk taktiež na SK (Slovenčina), featureClass parameter, ktorý určuje typ záznamu, nastavíme na P čo je podla dokumentácie mesto alebo dedina (ak by sme tento parameter nezadali dostali by sme pre jedno mesto viac záznamov, čo nie je želané) a posledný parameter type - v tomto prípade JSON. Nasledujúci riadky kódu demonštrujú implementáciu pomocou jQuery pluginu autocomplete:

$(function(){
    $('form').attr('autocomplete','off');
      
    $("#city").autocomplete('http://ws.geonames.org/search', {
        dataType: "jsonp",
        parse: function(data) {
            return $.map(data.geonames, function(row) {
                return {
                    data: row,
                    value: row.name,
                    result: row.name
                }
            });
        },
        extraParams:{
            q: '',
            type: 'json',
            country: 'SK',
            name_startsWith: function(){
                return $("#city").val();
            },
            featureClass: 'P',
            lang: 'SK'
        },
        formatItem: function(item) {
            return item.name;
        }
    });
});

Ak ste si všimli, dataType nie je JSON ale JSONP. Dôvodom je to, že JSONP umožňuje vykonávať HTTP requesty aj mimo domény. Pre plugin autocomplete je defaultné posielanie dotazov cez parameter q. V mojej implementácii hľadám pomocou parametra name_startsWith, preto parameter q musím nastaviť na prázdny reťazec aby sa podla neho nevyhľadávalo.

Ukážka na http://ivan-sulek.tk/demos/autocomplete/

Novinky

04.11.2011 - Pridané referencie

28.04.2010 - Pridaná funkcia komentovania fotiek

19.04.2010 - Referencie: pridaná nová práca (referencie)

15.04.2010 - Zmena domény na www.ivan-sulek.tk

04.10.2010 - Referencie: pridaná moja nová práca (referencie)

03.11.2010 - Pridaný fotoalbum

03.06.2010 - Do dnešného dňa nefungoval formulár na odosielanie mailov v sekcii kontakt, preto prosím tých, ktorí mi niečo písali aby tak urobili ešte raz. Ďakujem

03.02.2010 - Doplnené moje práce v časti referencie

03.01.2009 - Aktualizovaná sekcia O mne

28.02.2010 - K dnešnému dňu je spustená testovacia prevádza webu