Ako vytvoriť datalist, ktorý je okamžite vyhľadateľný
Rozbaľovacie zoznamy sú skvelým spôsobom poskytovanie možností pre vstupné pole, najmä ak je zoznam dostupných možností dlhý. Používateľ si môže zvoliť požadovanú možnosť zadaním do poľa, alebo pozrite sa na možnosti ktoré môžu zodpovedať tomu, čo hľadajú. Možnosť vyhľadať možnosti, je však ideálne riešenie.
Toto správanie sa dá dosiahnuť pomocou funkcie HTML element, ktorý zobrazuje návrhy vstupu pre rôzne ovládacie prvky, ako napr
tag. však
zobrazuje iba dostupné možnosti, ak má používateľ už niečo napísal do vstupného poľa.
Môžeme urobiť vstupné pole viac použiteľné, ak povolíme používateľom prístup k úplnému zoznamu možností kedykoľvek počas procesu odberu vstupov.
V tomto príspevku uvidíme, ako vytvoriť rozbaľovací zoznam, ktorý je kedykoľvek vyhľadateľný pomocou a
Prvky HTML a malý JavaScript.
1. Vytvorte Datalist s možnosťami
Najprv vytvoríme datalistu pre rôzne textové editory. Uistite sa, že hodnota zoznam
atribút štítok je to isté ako
id
z tag - takto ich navzájom viazame.
2. Zistite, či je Datalist viditeľný
V predvolenom nastavení Element HTML je skrytý. Môžeme to vidieť len keď sme my začnite písať vstup do poľa, ku ktorému je pripojený datalista.
Existuje však spôsob, ako "vynútiť" obsah dátového zoznamu (t. J. Všetkých jeho možností) aby sa zobrazili na webovej stránke. Potrebujeme iba to, aby sme boli vhodní zobraziť
hodnota nehnuteľnosti iný ako nikto
, napríklad Zobrazenie: blok;
.
datalist zobrazenie: blok;
Zobrazené možnosti ešte nie je možné vybrať v tomto okamihu iba prehliadač poskytuje možnosti zistí vnútri datalistu.
Ako už bolo spomenuté, kvôli zabudovanému správaniu sa element, časť možností sa už zobrazuje a je voliteľná, ale iba vtedy, keď používateľ začne písať reťazec, na ktorý môže prehliadač používať nájsť možnosť zhody.
Takisto musíme nájsť mechanizmus, ktorý by sme mali robiť všetko (na horeuvedenej obrazovke zobrazenej pod rozbaľovacou datalistou) voliteľný na akýkoľvek iný bod vstupného procesu - keď si užívatelia chcú skontrolovať možnosti skôr, ako napíšu niečo, alebo keď už niečo zadali do vstupného poľa.
3. Pripojte
Element HTML
Existujú dva spôsoby, ako umožniť používateľom pozrite si a vyberte všetky možnosti kedykoľvek chcú:
- Môžeme pridať a kliknite na obsluhu udalosti na každú možnosť a použite ju na výber možnosti, keď ju kliknete, alebo môžeme tiež premeniť možnosti do skutočného rozbaľovacieho zoznamu, ktorý je štandardne voliteľný.
- Môžeme zabalte možnosti z datalistu s
Prvok HTML.
Druhú metódu si vyberieme, pretože je to jednoduchšie a je možné ju použiť ako záložný mechanizmus v prehliadačoch, ktoré nepodporujú element. Keď prehliadač nemôže vykresliť a zobraziť datalistu, je to urobí
prvkom so všetkými jeho možnosťami namiesto.
V predvolenom nastavení vybrať
prvok sa nezobrazuje v prehliadačoch, ktoré podporujú datalistu, to znamená, že až do dňa nútiť datalistu, aby poskytol svoj obsah s zobrazenie: blok;
Pravidlo CSS.
Takže keď sme my zabalte možnosti z vyššie uvedeného príkladu (kde má datalista display: block
) s HTML tag, kód je vyzerajúci nižšie:
na zobraziť všetky možnosti z vybrať
v rozbaľovacom zozname je potrebné použiť atribúty násobok
zobraziť viac ako jednu možnosť a veľkosť
pre počet možností, ktoré chceme zobraziť.
4. Pridajte tlačidlo prepínania
Úplný rozbaľovací zoznam sa má zobraziť iba keď používateľ klikne na tlačidlo prepínania vedľa zadávacieho poľa, zatiaľ čo používateľ zadá pracovný datalist. Poďme zmeniť zobraziť
hodnoty datalistu na nikto
, a tiež pridať tlačidlo vedľa vstupného poľa, ktoré bude prepínať zobraziť
hodnota datalistu a následne spustiť vzhľad vybrať
.
datalist display: none;
Musíme tiež pridať nasledujúce tlačidlo nad datalistom v súbore HTML:
Teraz sa pozrime na JavaScript. Najprv definujeme počiatočné premenné.
tlačidlo = dokument.querySelector ('tlačidlo'); datalist = document.querySelector ('datalist'); vyberte = document.querySelector ('select'); options = select.options;
Ďalej musíme pridanie poslucháča udalosti (toggle_ddl
) na kliknutie udalosti na tlačidlo, ktoré bude prepínať vzhľad datalistu.
button.addEventListener ('kliknite', prepnúť_ddl);
Potom definujeme toggle_ddl ()
Funkcie. Aby sme tak urobili, musíme to urobiť skontrolujte hodnotu datalist.style.display
vlastnosť. Ak je prázdny reťazec, datalizátor je skrytý, takže musíme nastavte hodnotu na blok
, a tiež zmeňte tlačidlo od šípky smerujúcej nadol k šípke smerujúcej nahor.
funkcia toggle_ddl () / * ak je skrytý DDL * / if (datalist.style.display === ") / * zobraziť DDL * / datalist.style.display = 'block';¢"Hide_select (); funkcia hide_select () / * skryť DDL * / datalist.style.display ="; button.textContent = "âA-A¼";
hide_select ()
funkcie skryje datalistu nastavením datalist.style.display
Vlastnosť späť do prázdneho reťazca a zmena šípky tlačidla späť smerom nadol.
V konečnom nastavení, ak vstupné polia obsahujú predtým vybranú možnosť a rozbalovací zoznam bol tiež spustený neskorším kliknutím na tlačidlo, predvolene zvolená možnosť tiež sa musí zobraziť ako vybrané v rozbaľovacom zozname.
Takže, pridajte nasledujúci zvýraznený kód na toggle_ddl ()
funkcie:
funkcia toggle_ddl () / * ak je skrytý DDL * / if (datalist.style.display === ") / * zobraziť DDL * / datalist.style.display = 'block';¢Var = vstupná hodnota pre (var i = 0;Chceme tiež skryť rozbaľovací zoznam, keď používateľ zadá do vstupného poľa (v čase, keď sa zobrazí pracovný datalista).
/ * keď chce používateľ napísať do textového poľa, skryť DDL * / input = document.querySelector ('vstup'); input.addEventListener ('zaostrenie', hide_select);5. Aktualizujte vstup, keď je vybratá možnosť
Nakoniec, poďme pridaj
zmena
obsluha udalosti natag, takže keď používateľ vyberie z rozbaľovacieho zoznamu možnosť, jeho hodnota sa zobrazí vo vnútri
oblasti.
/ * keď používateľ vyberie možnosť z DDL, napíše do textového poľa * / select.addEventListener ('change', fill_input); funkcia fill_input () input.value = voľby [this.selectedIndex] .value; hide_select ();nevýhody
Hlavnou nevýhodou tejto techniky je absencia priameho spôsobu štýlu
element s CSS (vzhľad súboru)
a
značky sa líšia v rôznych prehliadačoch).
Aj vo Firefoxe je vstupný text prispôsobený možnostiam obsahuje vstupné znaky, zatiaľ čo ostatné prehliadače súhlasia s týmito možnosťami začať s tieto znaky. Špecifikácia W3C pre datalistu výslovne neurčuje, ako by sa malo uskutočňovať porovnávanie.
Okrem toho je táto metóda dobrá a funguje vo všetkých hlavných prehliadačoch, zatiaľ čo v prehliadačoch, kde to nemusí fungovať, používatelia stále vidia rozbaľovací zoznam, iba návrhy sa nezobrazia.
Pozrite sa na posledné demo s trochou CSS štýlu nižšie: