Cum de a crea un Datalist care este instantaneu de căutare
Listele de licitare sunt un mod bun pentru oferind opțiuni pentru un câmp de intrare, în special când lista opțiunilor disponibile este lungă. Un utilizator poate alege opțiunea dorită tastând în câmp, sau uita-te prin opțiuni care poate fi un meci pentru ceea ce cauta. Fiți capabili să căutați printre opțiuni, cu toate acestea, este soluția ideală.
Acest comportament poate fi atins cu Elementul HTML care afișează sugestiile de introducere pentru controale diferite, cum ar fi
etichetă. in orice caz
afișează doar opțiunile disponibile când utilizatorul are deja a scris ceva în câmpul de introducere.
Putem crea un câmp de intrare mai ușor de utilizat dacă permitem utilizatorilor să facă acest lucru accesați lista completă a opțiunilor în orice moment în timpul procesului de luare a datelor.
În acest post, vom vedea cum să creați o drop-down listă care poate fi căutată în orice moment folosind și
Elemente HTML și un mic JavaScript.
1. Creați un Datalist cu Opțiuni
Mai întâi, vom crea un datalist pentru diferiți editori de text. Asigurați-vă că valoarea lui listă
atributul etichetă este la fel ca
id
din etichetă - așa le legăm unul de celălalt.
2. Faceți Datalistul vizibil
În mod implicit, funcția Elementul HTML este ascuns. Putem vedea doar atunci când noi începeți să introduceți o intrare în câmpul pe care este atașat datalistul.
Cu toate acestea, există o modalitate de a "forța" conținutul datalistului (adică toate opțiunile acestuia) să apară pe pagina web. Trebuie doar să-i dăm o potrivire afişa
Valoarea proprietății în afară de nici unul
, de exemplu display: block;
.
datalist display: bloc;
Opțiunile afișate nu sunt încă selectabile în acest moment, numai browser-ul face opțiunile găsește în interiorul datalistului.
Așa cum am menționat mai sus, datorită comportamentului încorporat al element, o parte din opțiuni apar deja și sunt selectabile, dar numai atunci când utilizatorul începe să introducă un șir de caractere pe care îl poate utiliza browserul găsiți o opțiune de potrivire.
Trebuie, de asemenea, să găsim un mecanism de realizat toate opțiuni (pe ecranul de mai sus afișat sub dropalistul de date) selectabil la orice alt punct al procesului de luare a datelor - când utilizatorii doresc să verifice opțiunile înainte de a scrie ceva sau când au luat deja ceva în câmpul de introducere.
3. Aduceți în
Elementul HTML
Există două moduri de a permite utilizatorilor să facă acest lucru consultați și selectați toate opțiunile ori de câte ori doresc:
- Putem adăuga a faceți clic pe handler de evenimente la fiecare opțiune și folosiți-o pentru a selecta o opțiune atunci când este făcută clic pe ea sau putem, de asemenea transforma opțiunile într-o listă reală de drop-down, care, în mod implicit, este selectabil.
- Noi putem împachetați opțiunile al datalistului cu
Elementul HTML.
Vom alege a doua metodă, deoarece este mai simplă și este permisă folosirea acesteia ca mecanism de rezervă în browserele care nu acceptă element. Atunci când un browser nu poate afișa și afișa datele, acesta transformă
element cu toate opțiunile sale in schimb.
În mod implicit, funcția Selectați
elementul nu apare în browserele care susțin date de tip datalist, adică până la noi forțați datalistul să facă conținutul său cu afișare: bloc;
Regula CSS.
Deci, când noi împachetați opțiunile din exemplul de mai sus (unde datalistul are display: block
) cu Etichetă HTML, codul arată mai jos:
La consultați toate opțiunile de Selectați
în lista derulantă, trebuie să folosim atributele multiplu
pentru a afișa mai multe opțiuni și mărimea
pentru numărul de opțiuni pe care dorim să le afișăm.
4. Adăugați un buton Toggle
Ar trebui să apară lista verticală completă numai când utilizatorul dă clic pe un buton de comutare lângă câmpul de introducere, în timp ce utilizatorul introduce datele de lucru. hai schimba afişa
valoarea datalistului la nici unul
, Si deasemenea adăugați un buton lângă câmpul de introducere, care va comuta afişa
valoarea datalistului și, prin urmare, declanșează apariția lui Selectați
.
datalist display: nici unul;
De asemenea, trebuie să adăugăm următorul buton deasupra datalistului în fișierul HTML:
Acum, să vedem JavaScript. În primul rând, definim variabile inițiale.
button = document.querySelector ("buton"); datalist = document.querySelector ("datalist"); select = document.querySelector ('selectați'); options = select.options;
În continuare, trebuie să facem asta adăugați un ascultător al evenimentului (toggle_ddl
) la evenimentul de clic al butonului care va schimbați aspectul datalistului.
button.addEventListener ("clic", comutare_ddl);
Apoi, definim toggle_ddl ()
funcţie. Pentru a face acest lucru, trebuie să facem asta verificați valoarea lui datalist.style.display
proprietate. Dacă este un șir gol, datalistul este ascuns, așa că trebuie setați valoarea la bloc
, și de asemenea schimba butonul de la o săgeată îndreptată în jos către o săgeată îndreptată în sus.
funcția toggle_ddl () / * dacă DDL este ascunsă * / if (datalist.style.display === ") / * arată DDL * / datalist.style.display = 'block';¢ Hide_select (); funcția hide_select () / * ascunde DDL * / datalist.style.display = "; button.textContent = "âÂ-¼";
hide_select ()
funcţie ascunde datalistul prin setarea datalist.style.display
proprietatea înapoi la un șir gol, și schimbarea săgeată buton înapoi pentru a punct în jos.
În configurația finală, dacă câmpurile de introducere conțin o opțiune selectată anterior și lista derulantă a fost de asemenea declanșată de un clic pe butonul ulterior, opțiunea selectată în prealabil și trebuie să fie afișate ca fiind selectate din lista drop-down.
Deci, să adăugăm următorul cod evidențiat la toggle_ddl ()
funcţie:
funcția toggle_ddl () / * dacă DDL este ascunsă * / if (datalist.style.display === ") / * arată DDL * / datalist.style.display = 'block';¢(Var i = 0; i);De asemenea, dorim să ascundem lista verticală atunci când utilizatorul introduce textul în câmpul de introducere (în momentul în care apare datalistul de lucru).
/ * când utilizatorul dorește să scrie în câmpul text, ascunde DDL * / input = document.querySelector ('input'); input.addEventListener ("focalizare", hide_select);5. Actualizați intrarea atunci când este selectată o opțiune
În cele din urmă, hai să mergem adauga o
Schimbare
organizatorul evenimentului la, astfel încât atunci când utilizatorul selectează o opțiune din lista derulantă, valoarea sa va fi afișată în interiorul
de asemenea.
/ * când utilizatorul selectează o opțiune din DDL, scrie-o în câmpul text * / select.addEventListener ('change', fill_input); funcția fill_input () input.value = opțiuni [this.selectedIndex] .value; hide_select ();Inconvenientele
Principalul dezavantaj al acestei tehnici este lipsa unui mod direct de a modela
element cu CSS (aspectul
și
etichetele variază între diferite browsere).
De asemenea, în Firefox, textul de intrare este comparat cu opțiunile care sunt conține caracterele de intrare, în timp ce alte browsere se potrivesc cu opțiunile care începe cu acele personaje. Speculația W3C pentru distribuitorul de date nu specifică în mod explicit modul în care ar trebui făcută potrivirea.
În afară de asta, această metodă este bună și funcționează în toate browserele importante, în timp ce în browsere, unde este posibil să nu funcționeze, utilizatorii pot vedea în continuare lista drop-down, numai sugestiile nu vor apărea.
Check out demo-ul final cu un pic de stil CSS de mai jos: