Jak vytvořit Datalist to je okamžitě prohledávatelný
Rozevírací seznamy jsou přehledným způsobem poskytování možností pro vstupní pole, zejména pokud je seznam dostupných možností dlouhý. Uživatel si může vybrat možnost, kterou chce do pole, nebo Prohlédněte si možnosti které mohou být shodné s tím, co hledají. Schopnost prohledávat možnosti, je však ideálním řešením.
Toto chování lze dosáhnout pomocí HTML element, který zobrazí vstupní návrhy pro různé ovládací prvky, např. \ t
štítek. nicméně
zobrazuje pouze dostupné možnosti, když má uživatel už něco napsal do vstupního pole.
Můžeme učinit vstupní pole použitelnějším, pokud to umožníme uživatelům přístup k úplnému seznamu možností kdykoli během procesu zadávání vstupů.
V tomto příspěvku uvidíme, jak vytvořit rozevírací seznam, který lze kdykoli vyhledat za použití a
Prvky HTML a malý JavaScript.
1. Vytvořte Datalist s volbami
Nejprve vytvoříme datalistu pro různé textové editory. Ujistěte se, že hodnota seznam
atribut štítek je stejné jako
id
z tag - to je to, jak je spojujeme.
2. Proveďte vizualizaci Datalistu
Ve výchozím nastavení HTML element je skrytý. Vidíme to jen tehdy, když my začněte psát vstup do pole je připojen datalista.
Existuje však způsob, jak „silou“ obsahu datalistu (tj. Všech jeho možností) se zobrazí na webové stránce. Potřebujeme jen dát to vhodné Zobrazit
hodnota majetku jiný než žádný
, například zobrazení: blok;
.
datalist zobrazení: blok;
Zobrazené možnosti nejsou ještě volitelné v tomto okamžiku pouze prohlížeč možnosti nachází uvnitř datalistu.
Jak bylo uvedeno výše, díky zabudovanému chování živel, část možností se již objeví a je možné ji vybrat, ale jen když uživatel začne psát řetězec ke kterému prohlížeč může najít odpovídající možnost.
Musíme také najít mechanismus, který bychom měli udělat Všechno možnosti (na výše uvedeném snímku zobrazeném pod rozbalovacím datalistem) volitelné v jakýkoli jiný bod procesu přijímání vstupů - když uživatelé chtějí zkontrolovat možnosti dříve, než začnou něco psát, nebo když už něco zadali do vstupního pole.
3. Přiveďte
Element HTML
Uživatelé mohou povolit dva způsoby zobrazit a vybrat všechny možnosti kdykoliv chtějí:
- Můžeme přidat a obsluha události click na každou možnost a použít ji k výběru možnosti, když na ni kliknete, nebo také přeměnit možností do reálného rozevíracího seznamu, které je standardně volitelné.
- Můžeme zabalit možnosti datalistu s
HTML element.
Vybereme druhou metodu, protože je to jednodušší a je dovoleno ji používat jako nouzový mechanismus v prohlížečích, které nepodporují živel. Když prohlížeč nemůže vykreslit a zobrazit datalist, je to poskytuje
všechny možnosti místo toho.
Ve výchozím nastavení vybrat
element se neobjeví v prohlížečích, které podporují datalist, to znamená, dokud ne přinutit datalist, aby poskytl svůj obsah s zobrazení: blok;
CSS pravidlo.
Takže, když jsme zabalit možnosti z výše uvedeného příkladu (kde má datalista zobrazit: blok
) pomocí Značka HTML, kód vypadá takto:
Na zobrazit všechny možnosti z vybrat
v rozevíracím seznamu musíme použít atributy násobek
zobrazit více možností a velikost
pro počet možností, které chceme ukázat.
4. Přidejte přepínací tlačítko
Má se zobrazit úplný rozevírací seznam pouze uživatele klikne na přepínací tlačítko vedle vstupního pole, zatímco je zobrazen typ uživatele, který pracuje. Pojďme Změň Zobrazit
hodnotu datalistu na žádný
, a také přidejte tlačítko vedle vstupního pole, které bude přepínat Zobrazit
hodnotu datalistu a následně vyvolá vzhled vybrat
.
datalist zobrazit: žádný;
Také musíme přidat následující tlačítko nad souborem datalist v souboru HTML:
Nyní se podívejme na JavaScript. Nejprve definujeme počáteční proměnné.
button = document.querySelector ('tlačítko'); datalist = document.querySelector ('datalist'); select = document.querySelector ('select'); options = select.options;
Dále musíme přidat posluchače událostí (toggle_ddl
) na událost klepnutí na tlačítko, které bude přepínat vzhled datalistu.
button.addEventListener ('click', toggle_ddl);
Pak definujeme toggle_ddl ()
funkce. K tomu je třeba zkontrolujte hodnotu datalist.style.display
vlastnictví. Pokud je to prázdný řetězec, datalista je skrytý, takže musíme nastavte jeho hodnotu na blok
, a také změňte tlačítko od šipky směřující dolů k šipce směřující nahoru.
funkce toggle_ddl () / * pokud je DDL skryta * / if (datalist.style.display === ") / * show DDL * / datalist.style.display = 'block'; this.textContent =" âÂ- ² else hide hide hide_select (); funkce hide_select () / * skrýt DDL * / datalist.style.display = "; button.textContent = "âÂ-¼";
hide_select ()
funkce skrývá datalistu nastavením datalist.style.display
Vlastnost zpět na prázdný řetězec a změnou šipky tlačítka zpět na bod dolů.
V posledním nastavení, pokud vstupní pole obsahují dříve vybranou možnost a rozevírací seznam byl také spuštěn později, kliknete na volbu previoulsy také musí být zobrazeno jako vybrané v rozevíracím seznamu.
Přidejme tedy následující zvýrazněný kód toggle_ddl ()
funkce:
funkce toggle_ddl () / * pokud je DDL skryta * / if (datalist.style.display === ") / * show DDL * / datalist.style.display = 'block'; this.textContent =" âÂ-²; var val = input.value; pro (var i = 0; iChceme také skrýt rozbalovací seznam, když uživatel zadává do vstupního pole (v době, kdy se objeví pracovní datalista).
/ * když uživatel chce napsat do textového pole, skrýt DDL * / input = document.querySelector ('input'); input.addEventListener ('focus', hide_select);5. Pokud je volba vybrána, aktualizujte vstup
Konečně, pojďme přidat
změna
obsluha události naPokud uživatel vybere volbu z rozevíracího seznamu, její hodnota se zobrazí uvnitř
také.
/ * když uživatel vybere volbu z DDL, zapíše se do textového pole * / select.addEventListener ('change', fill_input); function fill_input () input.value = volby [this.selectedIndex] .hodnota; hide_select ();Nevýhody
Hlavní nevýhodou této techniky je absence přímého způsobu, jak styl
živel s CSS (vzhled
a
tagy se liší v různých prohlížečích).
Také ve Firefoxu je vstupní text porovnán s možnostmi, které obsahuje vstupních znaků, zatímco jiné prohlížeče odpovídají možnostem, které začít s tyto znaky. Specifikace W3C pro datalist výslovně neuvádí, jak by mělo být provedeno párování.
Jinak je tato metoda dobrá a funguje ve všech hlavních prohlížečích, vzhledem k tomu, že v prohlížečích, kde nemusí fungovat, mohou uživatelé stále vidět rozevírací seznam, nezobrazí se pouze návrhy.
Podívejte se na poslední demo s trochou stylů CSS: