Как да създадете даталист Това е незабавно търсене
Падащите списъци са чист начин предоставяне на опции за поле за въвеждане, особено когато списъкът с налични опции е дълъг. Потребителят може да избере желаната от него опция пишете в полето, или разгледайте опциите това може да е съвпадение с това, което търсят. Възможност за търсене по опциите, въпреки това е идеалното решение.
Това поведение може да се постигне с HTML елемент, който показва предложения за въвеждане за различни контроли, като например
маркер. въпреки това
показва само наличните опции, когато потребителят има вече е написал нещо в полето за въвеждане.
Можем да направим поле за въвеждане по-използваемо, ако позволяваме на потребителите достъп до пълния списък с опции по всяко време по време на процеса на набиране на данни.
В тази публикация ще видим как да създадем падащ списък, който може да се търси по всяко време използвайки и
HTML елементи и малко JavaScript.
1. Създайте Даталист с Опции
Първо, създаваме данни за различни текстови редактори. Уверете се, че стойността на списък
атрибут на свободен край е същото като на
документ за самоличност
от tag - така ги свързваме един с друг.
2. Направете Datalist видим
По подразбиране Елементът HTML е скрит. Можем само да го видим, когато ние започнете да въвеждате вход в полето, към което е прикачен данни.
Въпреки това има начин да "принудим" съдържанието на данни (т.е. всичките му опции) да се покаже на уеб страницата. Трябва само да му дадем подходящ показ
стойност на имота различни от нито един
, например езика: блок;
.
datalist display: block;
Показаните опции все още не могат да се избират в този момент само браузърът показва опциите той намира вътре в datalist.
Както е посочено по-горе, поради вграденото поведение на елемент, част от опциите вече се появяват и се избират, но само когато потребителят започне да въвежда низ, за който браузърът може намерете опция за съвпадение.
Също така трябва да намерим механизъм, който да направим всичко опции (на горната снимка на екрана, показана под падащия списък с данни) избираем при всяка друга точка от процеса на вписване - когато потребителите искат да проверят опциите, преди да напишат нещо, или докато вече са взели нещо в полето за въвеждане.
3. Донесете в
HTML елемент
Има два начина за активиране на потребителите вижте и изберете всички опции когато пожелаят:
- Можем да добавим a щракнете върху манипулатор на събития за всяка опция и я използвайте, за да изберете опция, когато е кликнала върху нея, или можем също трансформиране опциите в истински падащ списък, който по подразбиране се избира.
- Ние можем увийте опциите на данни с
HTML елемент.
Ще изберем втория метод, тъй като е по-прост и е позволено да се използва като резервен механизъм в браузъри, които не поддържат елемент. Когато браузърът не може да визуализира и покаже данни, той показва
елемент с всичките му възможности вместо.
По подразбиране изберете
елемент не се появява в браузъри, които поддържат данни, тоест, докато ние да накарате данниста да визуализира неговото съдържание с дисплей: блок;
CSS правило.
Така че, когато ние увийте опциите от горния пример (където има данни дисплей: блок
) с HTML етикет, кодът изглежда по-долу:
Да се вижте всички опции на изберете
в падащия списък трябва да използваме атрибутите многократни
, за да се покажат повече от един опции, и размер
за броя на опциите, които искаме да покажем.
4. Добавете бутон за превключване
Пълният падащ списък трябва да се появи само когато потребителят натиска бутон за превключване до полето за въвеждане, докато потребителят изписва работния даталист. Нека да променете показ
стойност на данни да се нито един
, и също добавете бутон до полето за въвеждане, което ще превключва показ
стойност на данни, и следователно да задейства появата на изберете
.
datalist display: none;
Също така трябва да добавим следния бутон над файла за данни в HTML файла:
Сега да видим JavaScript. Първо, ние определяме първоначални променливи.
button = document.querySelector ("бутон"); datalist = document.querySelector ("datalist"); select = document.querySelector ('select'); options = select.options;
След това трябва добави слушател на събитие (toggle_ddl
) до щракване на бутон, който ще изпълни превключва вида на файла с данни.
button.addEventListener ('клик', toggle_ddl);
След това определяме toggle_ddl ()
функция. За да направим това, трябва проверете стойността на datalist.style.display
Имот. Ако е празен низ, данните от данни са скрити, така че трябва задайте стойността му на блок
, и също променете бутона от стрелка надолу към стрелка, сочеща нагоре.
function toggle_ddl () / * ако е скрит DDL * / if (datalist.style.display === ") / * show DDL * / datalist.style.display = 'block'; this.textContent =" âÂ-² "; else hide_select (); функция hide_select () / * hide DDL * / datalist.style.display ="; button.textContent = "âА-А¼";
Най- hide_select ()
функция скрива данни чрез задаване на datalist.style.display
обратно на празен низ и промяна на стрелката на бутона назад, за да сочи надолу.
В крайната настройка, ако полетата за въвеждане задържат предварително избрана опция и падащият списък също е бил задействан от по-късен бутон на бутона, избраната опция също може да се избере. трябва да се показва, както е избрано в падащия списък.
Така че нека да добавим следния маркиран код към toggle_ddl ()
функция:
function toggle_ddl () / * ако е скрит DDL * / if (datalist.style.display === ") / * show DDL * / datalist.style.display = 'block'; this.textContent =" âVar-val = input.value, за (var i = 0; iСъщо така искаме да скрием падащия списък, когато потребителят въведе в полето за въвеждане (в момента, в който ще се покаже работният даталист).
/ * когато потребителят иска да въведе текст в текстово поле, скрий DDL * / input = document.querySelector ('input'); input.addEventListener ("фокус", hide_select);5. Актуализирайте Input, когато е избрана опция
И накрая, нека добави
промяна
събитие към, така че когато потребителят избере опция от падащия списък, неговата стойност ще се покаже вътре в
поле.
/ * когато потребителят избере опция от DDL, напишете го в текстово поле * / select.addEventListener ('change', fill_input); функция fill_input () input.value = options [this.selectedIndex] .value; hide_select ();Недостатъци
Основният недостатък на тази техника е липса на директен стил на стил
елемент с CSS (външния вид на
и
маркерите се различават в различните браузъри).
Също така, във Firefox, входящият текст се сравнява с опции, които съдържа входните символи, докато други браузъри съответстват на опциите Започни с тези знаци. Спецификацията W3C за данни не посочва изрично начина на съвпадение.
Освен това, този метод е добър и работи във всички основни браузъри, докато в браузърите, където може да не работи, потребителите все още могат да видят падащия списък, само предложенията няма да се появят.
Вижте финалната демонстрация с малко CSS стайлинг по-долу: