Kaip sukurti „Datalist“, kuri yra greitai ieškoma
Išskleidžiamieji sąrašai yra tvarkingas būdas galimybių įvesties laukui, ypač jei galimų parinkčių sąrašas yra ilgas. Vartotojas gali pasirinkti norimą parinktį įvesti į lauką, arba ieškokite galimybių tai gali atitikti tai, ko jie ieško. Galimybė ieškoti per parinktis, tačiau tai yra idealus sprendimas.
Šį elgesį galima pasiekti HTML elementas rodo įvesties pasiūlymus skirtingoms kontrolėms, pvz
žyma. Tačiau
rodo tik turimas parinktis, kai vartotojas turi jau įvedėte kažką į įvesties lauką.
Mes galime padaryti įvesties lauką naudingesnį, jei įgalinsime vartotojus atidarykite visą parinkčių sąrašą bet kuriuo metu įvedimo proceso metu.
Šiame pranešime matysime, kaip sukurti a išskleidžiamajame sąraše, kurį galima ieškoti bet kuriuo metu naudojant ir
HTML elementai ir nedidelis „JavaScript“.
1. Sukurkite „Datalist“ su parinktimis
Pirma, sukuriame skirtingų teksto redaktorių datalistą. Įsitikinkite, kad sąrašą
atributas žyma yra toks pat kaip
ID
iš žyma - tai mes susiejame juos vienas su kitu.
2. Padarykite matomą „Datalist“
Pagal numatytuosius nustatymus HTML elementas yra paslėpta. Tai galime matyti tik tada, kai mes pradėkite įvesti įvestį į lauką datalistas yra prijungtas.
Tačiau yra būdas „priversti“ datalisto turinį (t. Y. Visas jo parinktis) rodyti tinklalapyje. Turime tik suteikti jai tinkamą ekranas
turto vertė kitaip nei nė vienas
, pavyzdžiui ekranas: blokas;
.
datalistas display: block;
Rodomos parinktys dar neįmanoma pasirinkti šiuo metu tik naršyklė suteikia galimybes jis randa datalisto viduje.
Kaip jau minėta, dėl integruoto elgesio elementas, dalis parinkčių jau yra rodomos ir yra pasirinktinos, bet tik tada, kai vartotojas pradeda rašyti eilutę, į kurią gali prisijungti naršyklė rasti suderinimo parinktį.
Mes taip pat turime rasti mechanizmą, kurį reikia atlikti visi parinktys (pirmiau esančioje ekrano dalyje, esančioje po išskleidžiamajame dataliste) galima pasirinkti ne bet koks kitas įvesties proceso taškas - kai vartotojai nori patikrinti parinktis prieš įvesdami ką nors, arba kai jie jau kažką ėmėsi į įvesties lauką.
3. Įjunkite
HTML elementas
Yra du būdai, kaip įgalinti vartotojus pamatyti ir pasirinkti visas parinktis kada jie nori:
- Galime pridėti a spustelėkite įvykių tvarkytoją į kiekvieną parinktį ir naudokite ją pasirinkti pasirinktį, kai ji spustelėta, arba mes taip pat galime transformuoti parinktis į tikrąjį išskleidžiamąjį sąrašą, kuri, pagal nutylėjimą, yra pasirenkama.
- Mes galime apvyniokite parinktis datalisto su
HTML elementas.
Pasirinkime antrąjį metodą, nes jis bus paprastesnis, ir jį leidžiama naudoti kaip atsarginis mechanizmas naršyklėse, kurios nepalaiko elementas. Kai naršyklė negali atkurti ir nerodyti datalisto, tai suteikia
elementas su visomis jo galimybėmis vietoj to.
Pagal numatytuosius nustatymus pasirinkite
elementas nerodomas naršyklėse, kurios palaiko datalistą, tai yra, kol mes priversti datalistą pateikti savo turinį su ekranas: blokas;
CSS taisyklė.
Taigi, kai mes apvyniokite parinktis iš aukščiau pateikto pavyzdžio (kur yra datalistas) ekranas: blokas
) su HTML žyma, kodas atrodo taip:
Į pamatyti visas parinktis apie pasirinkite
išskleidžiamajame sąraše turime naudoti atributus daugkartinis
rodyti daugiau nei vieną parinktį, ir dydis
už pasirinktų variantų skaičių.
4. Pridėti „Toggle“ mygtuką
Turėtų būti rodomas visas išskleidžiamajame sąraše tik kai vartotojas paspaudžia perjungimo mygtuką šalia įvesties lauko, o vartotojo tipai - darbinis datalistas. Leiskite pakeisti ekranas
datalisto vertė į nė vienas
, ir taip pat pridėkite mygtuką šalia įvesties lauko, kuris įjungs ekranas
datalisto vertę, ir dėl to gali atsirasti pasirinkite
.
datalistas display: none;
HTML faile taip pat reikia pridėti šį mygtuką virš datalisto:
Dabar pažiūrėkime „JavaScript“. Pirma, mes apibrėžiame pradiniai kintamieji.
button = document.querySelector ('mygtukas'); datalist = document.querySelector („datalist“); select = document.querySelector ('select'); options = select.options;
Toliau turime pridėti įvykio klausytoją (toggle_ddl
) mygtuko paspaudimo atveju, kuris bus perjungti datalisto išvaizdą.
button.addEventListener („spustelėkite“, „toggle_ddl“);
Tada mes apibrėžiame toggle_ddl ()
funkcija. Norėdami tai padaryti, turime patikrinkite datalist.style.display
nuosavybė. Jei tai tuščia eilutė, datalistas yra paslėptas, todėl mums reikia nustatyti jo vertę blokuoti
, ir taip pat pakeisti mygtuką nuo žemyn nukreipiančios rodyklės iki rodyklės, nukreipiančios į viršų.
funkcija toggle_ddl () / * jei DDL yra paslėptas * / jei (datalist.style.display === ") / * rodyti DDL * / datalist.style.display = 'blokas'; this.textContent =" âÂ-² "; kitas hide_select (); funkcija hide_select () / * paslėpti DDL * / datalist.style.display ="; button.textContent = "âÂ-¼";
The hide_select ()
funkcija slepia datalistą nustatydami datalist.style.display
atgal į tuščią eilutę ir pakeisite mygtuko rodyklę atgal į žemyn.
Galutiniame nustatyme, jei įvesties laukai turi anksčiau pasirinktą parinktį ir išskleidžiamajame sąraše taip pat buvo paleistas vėlesnis mygtuko paspaudimas, taip pat pasirinkta pasirinkta parinktis reikia nurodyti kaip pasirinkta išskleidžiamajame sąraše.
Taigi, pridėkime šį pažymėtą kodą toggle_ddl ()
funkcija:
funkcija toggle_ddl () / * jei DDL yra paslėptas * / jei (datalist.style.display === ") / * rodyti DDL * / datalist.style.display = 'blokas'; this.textContent =" âÂ-² "; var val = input.value; už (var i = 0; iTaip pat norime paslėpti išskleidžiamąjį sąrašą, kai vartotojas įveda į įvesties lauką (tuo metu, kai bus rodomas darbinis datalistas).
/ * kai vartotojas nori įvesti teksto lauką, paslėpti DDL * / input = document.querySelector („įvestis“); input.addEventListener ('focus', hide_select);5. Atnaujinkite įvestį pasirinkus parinktį
Galiausiai, leiskite Pridėti
pakeisti
įvykių tvarkytojas įžymelę, todėl, kai naudotojas pasirenka parinktį iš išskleidžiamojo sąrašo, jo vertė bus rodoma
srityje.
/ * kai vartotojas pasirenka parinktį iš DDL, įrašykite jį į teksto lauką * / select.addEventListener ('change', fill_input); funkcija fill_input () input.value = parinktys [this.selectedIndex] .value; hide_select ();Trūkumai
Pagrindinis šios technikos trūkumas yra tiesioginio būdo stiliaus nebuvimas
elementas su CSS (. \ t
ir
žymės skiriasi skirtingose naršyklėse).
Be to, „Firefox“ įvesties tekstas yra suderintas su parinktimis yra įvesties simbolius, o kitos naršyklės atitinka parinktis pradėti nuo tų simbolių. W3C specifikacija datalistui aiškiai nenurodo, kaip turi būti atliekamas atitikimas.
Be to, šis metodas yra geras ir veikia visose pagrindinėse naršyklėse, kadangi naršyklėse, kuriose jis gali neveikti, naudotojai vis dar gali matyti išskleidžiamąjį sąrašą, tik pasiūlymai nebus rodomi.
Toliau žiūrėkite galutinį demonstraciją su šiek tiek CSS stiliaus: