Jak utworzyć datalistę To natychmiastowe wyszukiwanie
Listy rozwijane są dobrym rozwiązaniem zapewnienie opcji dla pola wejściowego, szczególnie gdy lista dostępnych opcji jest długa. Użytkownik może wybrać żądaną opcję wpisując w pole, lub przejrzyj opcje które mogą pasować do tego, czego szukają. Możliwość przeszukiwania opcji, jednak jest idealnym rozwiązaniem.
To zachowanie można osiągnąć za pomocą Element HTML wyświetla sugestie wejściowe dla różnych elementów sterujących, takich jak
etykietka. jednak
pokazuje tylko dostępne opcje, gdy użytkownik je posiada już coś wpisałem w polu wprowadzania.
Możemy uczynić pole wejściowe bardziej użytecznym, jeśli umożliwiamy użytkownikom dostęp do pełnej listy opcji w dowolnym momencie podczas procesu wprowadzania danych.
W tym poście zobaczymy, jak utworzyć rozwijana lista, którą można przeszukiwać w dowolnym momencie używając i
Elementy HTML i trochę JavaScript.
1. Utwórz Datalist z opcjami
Najpierw tworzymy datalizator dla różnych edytorów tekstu. Upewnij się, że wartość lista
atrybut etykietka jest taki sam jak
ID
z tag - w ten sposób łączymy je ze sobą.
2. Spraw, aby Datalist był widoczny
Domyślnie Element HTML to ukryty. Możemy to zobaczyć tylko wtedy, gdy my zacznij wpisywać dane wejściowe w pole, do którego dołączony jest datalista.
Istnieje jednak sposób na „wymuszenie” zawartości datalizatora (tj. Wszystkich jego opcji) pojawiać się na stronie. Musimy tylko nadać mu odpowiedni pokaz
wartość nieruchomości inny niż Żaden
, na przykład Blok wyświetlacza;
.
datalist display: block;
Wyświetlane opcje nie można jeszcze wybrać w tym momencie tylko przeglądarka wyświetla opcje znajduje się wewnątrz datalisty.
Jak wspomniano wcześniej, ze względu na wbudowane zachowanie element, część opcji już się pojawi i można ją wybrać, ale tylko wtedy, gdy użytkownik zacznie wpisywać ciąg, do którego może użyć przeglądarki znajdź opcję dopasowania.
Musimy także znaleźć mechanizm do wykonania wszystko opcje (na powyższym obrazku wyświetlanym pod rozwijanym datalistą) do wyboru w dowolny inny punkt procesu pobierania danych wejściowych - gdy użytkownicy chcą sprawdzić opcje przed wpisaniem czegokolwiek lub gdy coś już wprowadzili do pola wejściowego.
3. Przynieś
Element HTML
Istnieją dwa sposoby na umożliwienie użytkownikom zobacz i wybierz wszystkie opcje kiedy chcą:
- Możemy dodać a kliknij obsługę zdarzeń do każdej opcji i użyj jej, aby wybrać opcję, gdy jest kliknięta, lub możemy również przekształcać opcje w prawdziwą listę rozwijaną, które domyślnie można wybrać.
- Możemy zawiń opcje datalisty z
Element HTML.
Wybierzemy drugą metodę, ponieważ jest prostsza i można ją używać jako mechanizm awaryjny w przeglądarkach, które nie obsługują element. Gdy przeglądarka nie może renderować i wyświetlać danych, to renderuje
element ze wszystkimi jego opcjami zamiast.
Domyślnie Wybierz
element nie pojawia się w przeglądarkach, które obsługują datalizatory, to znaczy, dopóki my zmusić datalistę do renderowania swojej zawartości z Blok wyświetlacza;
Reguła CSS.
Więc kiedy my zawiń opcje z powyższego przykładu (gdzie ma datalist Blok wyświetlacza
) z Tag HTML, kod wygląda jak poniżej:
Do zobacz wszystkie opcje z Wybierz
na liście rozwijanej musimy użyć atrybutów wielokrotność
aby wyświetlić więcej niż jedną opcję i rozmiar
za liczbę opcji, które chcemy pokazać.
4. Dodaj przycisk przełączania
Powinna pojawić się pełna lista rozwijana tylko kiedy użytkownik klika przycisk przełączania obok pola wejściowego, podczas gdy użytkownik wpisuje działający datalista. Chodźmy zmienić pokaz
wartość datalisty do Żaden
, i również dodaj przycisk obok pola wprowadzania, które przełącza pokaz
wartość datalisty, aw konsekwencji wyzwalanie wyglądu Wybierz
.
datalist display: none;
Musimy również dodać następujący przycisk nad datalistą w pliku HTML:
Teraz zobaczmy JavaScript. Najpierw definiujemy zmienne początkowe.
button = document.querySelector („przycisk”); datalist = document.querySelector ('datalist'); select = document.querySelector ('select'); options = select.options;
Następnie musimy dodaj słuchacza zdarzeń (toggle_ddl
) do zdarzenia kliknięcia przycisku, który będzie przełączyć wygląd datalisty.
button.addEventListener ('click', toggle_ddl);
Następnie definiujemy toggle_ddl ()
funkcjonować. Aby to zrobić, musimy sprawdź wartość datalist.style.display
własność. Jeśli jest to pusty ciąg, datalista jest ukryty, więc musimy ustaw jego wartość na blok
, a także do zmień przycisk od strzałki skierowanej w dół do strzałki skierowanej w górę.
funkcja toggle_ddl () / * jeśli DDL jest ukryta * / if (datalist.style.display === ") / * pokaż DDL * / datalist.style.display = 'block'; this.textContent =" âÂ-² "; else hide_select (); funkcja hide_select () / * ukryj DDL * / datalist.style.display ="; button.textContent = "⼄;
The hide_select ()
funkcjonować ukrywa datalistę ustawiając datalist.style.display
własność z powrotem na pusty ciąg i zmiana strzałki w tył, aby wskazać w dół.
W ostatecznej konfiguracji, jeśli pola wejściowe zawierają poprzednio wybraną opcję, a lista rozwijana została również wyzwolona przez późniejsze kliknięcie przycisku, poprzednio wybrana opcja również musi być pokazany jako wybrany na liście rozwijanej.
Dodajmy zatem następujący podświetlony kod do toggle_ddl ()
funkcjonować:
funkcja toggle_ddl () / * jeśli DDL jest ukryta * / if (datalist.style.display === ") / * pokaż DDL * / datalist.style.display = 'block'; this.textContent =" âÂ-² ”; var val = input.value; for (var i = 0; iChcemy również ukryć listę rozwijaną, gdy użytkownik wpisuje w polu wejściowym (w momencie pojawienia się działającego datalisty).
/ * gdy użytkownik chce wpisać w polu tekstowym, ukryj DDL * / input = document.querySelector ('input'); input.addEventListener ('focus', hide_select);5. Zaktualizuj dane wejściowe po wybraniu opcji
Wreszcie dodać
zmiana
obsługa zdarzeń doznacznik, dzięki czemu gdy użytkownik wybierze opcję z listy rozwijanej, jej wartość zostanie wyświetlona wewnątrz
pole.
/ * gdy użytkownik wybierze opcję z DDL, zapisz ją w polu tekstowym * / select.addEventListener ('change', fill_input); funkcja fill_input () input.value = options [this.selectedIndex] .value; hide_select ();Wady
Główną wadą tej techniki jest brak bezpośredniego sposobu na styl
element z CSS (wygląd
i
tagi różnią się w różnych przeglądarkach).
Ponadto w Firefoksie tekst wejściowy jest dopasowywany do opcji zawiera znaki wejściowe, podczas gdy inne przeglądarki dopasowują opcje zaczynać się te postacie. Specyfikacja W3C dla datalizatora nie określa wyraźnie, w jaki sposób należy wykonać dopasowanie.
Poza tym ta metoda jest dobra i działa we wszystkich głównych przeglądarkach, podczas gdy w przeglądarkach, w których może nie działać, użytkownicy nadal mogą zobaczyć listę rozwijaną, tylko sugestie się nie pojawią.
Sprawdź ostatnie demo z odrobiną stylizacji CSS poniżej: