Hogyan lehet létrehozni egy Datalist, ami azonnal kereshető
A legördülő listák egy egyszerű út opciók nyújtása egy beviteli mező esetében, különösen akkor, ha a rendelkezésre álló lehetőségek listája hosszú. A felhasználó kiválaszthatja a kívánt opciót gépeljen be a mezőbe, vagy nézze át az opciókat ez lehet egyezik azzal, amit keresnek. Lehetősége van a lehetőségek keresésére, Az ideális megoldás azonban.
Ez a viselkedés a HTML elem beviteli javaslatokat jelenít meg különböző vezérlőkhöz, például a
címke. azonban
csak a rendelkezésre álló opciókat jeleníti meg, amikor a felhasználó rendelkezik már beírt valamit a beviteli mezőbe.
A beviteli mezőt jobban használhatjuk, ha engedélyezzük a felhasználókat hozzáférhet az opciók teljes listájához a beviteli folyamat során bármikor.
Ebben a bejegyzésben látni fogjuk, hogyan hozhatunk létre egy legördülő lista, amely bármikor kereshető használni a és
HTML elemek és egy kis JavaScript.
1. Hozzon létre egy Datalist opcióval
Először létrehozunk egy datalistát a különböző szövegszerkesztőkhöz. Győződjön meg róla, hogy a lista
attribútuma címke ugyanaz mint a
id
a címke - így kötjük össze őket egymással.
2. Legyen látható a Datalista látható
Alapértelmezés szerint a HTML elem rejtett. Csak azt láthatjuk, amikor mi kezdje be a bevitelt a mezőbe a datalista csatlakozik.
Van azonban mód a datalista tartalmának „kényszerítésére” (azaz az összes lehetőségre) megjelenjen a weboldalon. Csak megfelelőnek kell lennünk kijelző
ingatlan érték más mint egyik sem
, például display: block;
.
datalista display: block;
A megjelenített beállítások még nem választhatóak ezen a ponton csak a böngésző a beállításokat a datalista belsejében található.
Ahogy a fentiekben említettük, a elem, a beállítások egy része már megjelenik és választható, de csak akkor, ha a felhasználó olyan karakterláncot ír be, amelyre a böngésző képes talál egy megfelelő opciót.
Meg kell találnunk egy mechanizmust is minden opciók (a fenti képernyőn a legördülő datalista alatt) választható nál nél a bemeneti folyamat bármely más pontja - ha a felhasználók meg akarják nézni az opciókat, mielőtt bármit beírnának, vagy ha már bevittek valamit az input mezőbe.
3. Hozd be a
HTML elem
Kétféleképpen lehetséges a felhasználók engedélyezése nézze meg és válassza ki az összes opciót amikor akarják:
- Hozzáadhatunk egy kattintson az eseménykezelőre minden opcióhoz, és válasszon egy opciót, ha rákattint, vagy mi is átalakít lehetőségeket valódi legördülő listába, amely alapértelmezés szerint választható.
- Tudunk tekerje be az opciókat a datalista a ... val
HTML elem.
A második módszert választjuk, mivel ez egyszerűbb, és megengedett használni mint egy tartalék mechanizmus olyan böngészőkben, amelyek nem támogatják a elem. Ha a böngésző nem tudja megjeleníteni és megjeleníteni a datalistát teszi a
az összes lehetőséggel helyette.
Alapértelmezés szerint a választ
az elem nem jelenik meg olyan böngészőkben, amelyek támogatják a datalistát, azaz amíg nem arra kényszeríti a datalistát, hogy a tartalmát a ... val kijelző: blokk;
CSS szabály.
Szóval, mikor tekerje be az opciókat a fenti példából (ahol a datalista rendelkezik display: block
) a ... val HTML-címke, a kód az alábbiak szerint néz ki:
Nak nek tekintse meg az összes opciót nak,-nek választ
a legördülő listában kell használni az attribútumokat többszörös
több opció megjelenítése, és méret
a megjelenítendő lehetőségek számához.
4. Toggle gomb hozzáadása
A teljes legördülő lista jelenik meg csak amikor a felhasználó egy váltógombra kattint a beviteli mező mellett, míg a felhasználói típusok a működő datalista láthatóak. Nézzük változtasd meg a kijelző
datalista értéke nak nek egyik sem
, és még gomb hozzáadása a beviteli mező mellett, amely a kijelző
a datalista értékét, és ennek következtében kiváltja a megjelenését választ
.
datalista display: none;
A HTML-fájlba a következő datalista fölötti gombot is hozzá kell adnunk:
Most nézzük meg a JavaScript-et. Először definiáljuk a kezdeti változók.
button = document.querySelector ('gomb'); datalist = document.querySelector ('datalist'); select = document.querySelector ('select'); opciók = select.options;
Ezután meg kell adjon hozzá eseményfigyelőt (toggle_ddl
) a gombra kattintó eseményre a datalista megjelenésének váltása.
button.addEventListener ('click', toggle_ddl);
Ezután definiáljuk a toggle_ddl ()
funkció. Ehhez meg kell tennünk ellenőrizze az értéket datalist.style.display
ingatlan. Ha ez egy üres karakterlánc, a datalista elrejtve van, ezért kell állítsa be az értékét Blokk
, és még változtassa meg a gombot lefelé mutató nyílról egy felfelé mutató nyílra.
funkció toggle_ddl () / * ha a DDL rejtve van * / ha (datalist.style.display === ") / * DDL * / datalist.style.display = 'blokk'; ez.textContent =" âÂ-² "; else hide_select (); funkció hide_select () / * DDL * / datalist.style.display ="; button.textContent = "A¢A-a¼";
A hide_select ()
funkció elrejti a datalistát a datalist.style.display
visszaáll egy üres karakterláncra, és a gombnyomást vissza kell irányítani lefelé.
A végső beállítás esetén, ha a beviteli mezők egy korábban kiválasztott opciót tartalmaznak, és a legördülő lista egy későbbi gombnyomással is aktiválódik, akkor az előző opció is ki kell jelölni a kiválasztott módon a legördülő listában.
Szóval, add hozzá a következő kiemelt kódot a toggle_ddl ()
funkció:
funkció toggle_ddl () / * ha a DDL rejtve van * / ha (datalist.style.display === ") / * DDL * / datalist.style.display = 'blokk'; ez.textContent =" âÂ-² "; var val = input.value; a (var i = 0; iAzt is szeretnénk elrejteni a legördülő listát, amikor a felhasználó beírja a beviteli mezőt (amikor a működő datalista megjelenik).
/ * ha a felhasználó szövegmezőbe szeretne beírni, elrejti a DDL * / input = document.querySelector ('input') elemet; input.addEventListener ('focus', hide_select);5. Frissítse a bemenetet, ha egy opció van kiválasztva
Végül, nézzük add a
változás
eseménykezelő hozcímke, így amikor a felhasználó kiválaszt egy beállítást a legördülő listából, annak értéke megjelenik a
területén is.
/ * ha a felhasználó kiválaszt egy opciót a DDL-ből, írja be a * / select.addEventListener szövegmezőbe ('change', fill_input); függvény fill_input () input.value = opciók [this.selectedIndex] .value; hide_select ();hátrányai
Ennek a technikának a fő hátránya a a. \ t
elem CSS (a megjelenés a CSS)
és
a címkék különböző böngészők között változnak).
A Firefoxban a beviteli szöveg az opciókhoz is igazodik tartalmaz a beviteli karaktereket, míg a többi böngésző az adott opciót illeti kezdve ezeket a karaktereket. A W3C specifikáció a datalista számára nem határozza meg kifejezetten, hogy hogyan kell elvégezni az egyezést.
Ezen kívül ez a módszer jó és minden nagyobb böngészőben működik, mivel a böngészőkben, ahol nem működik, a felhasználók továbbra is láthatják a legördülő listát, csak a javaslatok nem jelennek meg.
Nézze meg az utolsó demót az alábbi CSS stílussal: