Kako stvoriti Datalist To je odmah Searchable
Padajući popisi su uredan način za pružanje opcija za polje za unos, osobito ako je popis dostupnih opcija dugačak. Korisnik može odabrati opciju koju želi tipkati u polje, ili pregledajte opcije to može odgovarati onome što traže. Biti u stanju pretraživati opcije, međutim, to je idealno rješenje.
Takvo se ponašanje može postići s HTML element koji prikazuje prijedloge unosa za različite kontrole, kao što je
označiti. Međutim
prikazuje samo dostupne opcije kada korisnik ima već ste nešto upisali u polje za unos.
Polje za unos možemo učiniti korisnijom ako korisnicima omogućimo pristupite cijelom popisu opcija u bilo kojem trenutku tijekom postupka unosa podataka.
U ovom postu vidjet ćemo kako stvoriti padajućeg popisa koji se može pretraživati u bilo kojem trenutku koristiti i
HTML elementi i mali JavaScript.
1. Stvorite Datalist s opcijama
Prvo, stvaramo datalist za različite uređivače teksta. Provjerite je li vrijednost popis
atribut označiti ista je kao
iskaznica
od tag - ovako ih vežemo jedni drugima.
2. Učinite Datalist vidljivim
Prema zadanim postavkama, HTML element je skriven. Možemo je vidjeti samo kad počnite tipkati ulaz u polje na koje je datalist priključen.
Međutim, postoji način da se "prisili" sadržaj datalista (tj. Sve njegove opcije) za prikaz na web-stranici. Trebamo mu samo dati prikladan prikaz
vrijednost imovine osim nijedan
, na primjer Prikaz: blok;
.
datalist display: block;
Prikazane opcije još se ne mogu odabrati u ovom trenutku samo preglednik prikazuje opcije nalazi unutar datalista.
Kao što je gore navedeno, zbog ugrađenog ponašanja element, dio opcija već se pojavljuje i može se odabrati, ali samo kada korisnik počne tipkati niz u koji preglednik može pronađite odgovarajuću opciju.
Također moramo pronaći mehanizam koji ćemo napraviti svi opcija (na gornjoj slici zaslona prikazanoj ispod padajućeg datalista) odabrati na bilo koje druge točke procesa unosa podataka - kada korisnici žele provjeriti opcije prije nego što unesu bilo što, ili dok su već poduzeli nešto u polje za unos.
3. Donesite u
HTML element
Postoje dva načina na koje možete omogućiti korisnicima pogledajte i odaberite sve opcije kad god žele:
- Možemo dodati a kliknite upravljač događajima za svaku opciju i koristite je za odabir opcije kada je kliknuta, ili također možemo transformirati opcije u pravi padajući popis, koji se, prema zadanim postavkama, može odabrati.
- Možemo omotajte opcije podataka s
HTML element.
Odabrat ćemo drugu metodu, jer je jednostavnija i dopuštena je za korištenje kao rezervni mehanizam u preglednicima koji ne podržavaju element. Kada preglednik ne može prikazati i prikazati datalist, on prikazuje
element sa svim njegovim mogućnostima umjesto.
Prema zadanim postavkama, Odaberi
element se ne pojavljuje u preglednicima koji ne podržavaju datalist, tj. dok mi prisiliti datalista da prikaže svoj sadržaj s prikaz: blok;
CSS pravilo.
Dakle, kad mi omotajte opcije iz gore navedenog primjera (gdje je datalist display: block
) s HTML oznaka, kôd izgleda kao u nastavku:
Do pogledajte sve opcije od Odaberi
u padajućem popisu trebamo koristiti atribute višekratnik
za prikaz više od jedne opcije i veličina
za broj opcija koje želimo prikazati.
4. Dodajte gumb za prebacivanje
Trebao bi se pojaviti cijeli padajući popis samo kada korisnik klikne na prekidač pored polja za unos, dok se korisnik pojavljuje u radnom datalistu. Recimo promijeni prikaz
vrijednost datalista do nijedan
, I također dodajte gumb pored polja za unos, koji će se uključiti prikaz
vrijednosti datalista i posljedično potaknuti pojavu Odaberi
.
datalist display: none;
Također moramo dodati sljedeći gumb iznad datalista u HTML datoteci:
Sada ćemo vidjeti JavaScript. Prvo definiramo početne varijable.
gumb = document.querySelector ('gumb'); datalist = document.querySelector ('datalist'); select = document.querySelector ('select'); options = select.options;
Dalje, moramo dodati slušatelja događaja (toggle_ddl
) na događaj klikom na gumb koji će promijenite izgled datalista.
button.addEventListener ('klik', toggle_ddl);
Zatim definiramo toggle_ddl ()
funkcija. Da bismo to učinili, moramo provjerite vrijednost datalist.style.display
svojstvo. Ako je prazan niz, datalist je skriven, tako da moramo postavite vrijednost na blok
, i također promijenite gumb od strelice prema dolje do strelice prema gore.
function toggle_ddl () / * ako je DDL skriven * / if (datalist.style.display === ") / * show DDL * / datalist.style.display = 'block'; this.textContent =" âÂ-² "; else hide_select (); function hide_select () / * hide DDL * / datalist.style.display ="; button.textContent = "Ă¢A-a¼";
hide_select ()
funkcija skriva datalist postavljanjem datalist.style.display
svojstvo natrag na prazan niz i promjenu strelice gumba natrag prema dolje.
U konačnom postavljanju, ako polja za unos sadrže prethodno odabranu opciju, a padajući popis je također pokrenut s kasnijim klikom gumba, opcija prethodno odabrana također treba biti prikazan kao odabran na padajućem popisu.
Dakle, dodajmo sljedeći označeni kôd toggle_ddl ()
funkcija:
function toggle_ddl () / * ako je DDL skriven * / if (datalist.style.display === ") / * show DDL * / datalist.style.display = 'block'; this.textContent =" â   ""; var val = input.value; za (var i = 0; iTakođer želimo sakriti padajući popis kada korisnik upisuje u polje za unos (u vrijeme kada će se pojaviti radna baza podataka).
/ * kada korisnik želi upisati tekstualno polje, sakrij DDL * / input = document.querySelector ('input'); input.addEventListener ('fokus', hide_select);5. Ažurirajte unos kada je opcija odabrana
Konačno, hajde dodati
promijeniti
rukovatelj događajima prema, tako da kada korisnik odabere opciju s padajućeg popisa, njegova vrijednost će se prikazati unutar
polje.
/ * kada korisnik odabere opciju iz DDL-a, upiši ga u tekstualno polje * / select.addEventListener ('change', fill_input); funkcija fill_input () input.value = opcije [this.selectedIndex] .value; hide_select ();Nedostaci
Glavni nedostatak ove tehnike je odsustvo izravnog načina oblikovanja
element s CSS (izgled
i
oznake razlikuju se u različitim preglednicima).
Također, u Firefoxu se ulazni tekst podudara s opcijama koje sadrži znakove unosa, dok drugi preglednici odgovaraju mogućnostima poceti sa tih znakova. Specifikacija W3C za datalist ne navodi eksplicitno kako bi trebalo izvršiti podudaranje.
Osim toga, ova metoda je dobra i radi u svim većim preglednicima, dok u preglednicima gdje možda ne radi, korisnici i dalje mogu vidjeti padajući popis, samo se prijedlozi neće pojaviti.
Pogledajte konačni demo s malo CSS stylinga u nastavku: