So erstellen Sie einen Datalisten, der sofort durchsuchbar ist
Dropdown-Listen sind ein guter Weg für Möglichkeiten bieten für ein Eingabefeld, insbesondere wenn die Liste der verfügbaren Optionen lang ist. Ein Benutzer kann die gewünschte Option auswählen Tippen in das Feld, oder Durchsuchen Sie die Optionen Das könnte eine Übereinstimmung für das sein, wonach sie suchen. Durchsuchen der Optionen, ist jedoch die ideale Lösung.
Dieses Verhalten kann mit der erreicht werden HTML-Element das zeigt Eingabevorschläge an für verschiedene Steuerelemente, wie z
Etikett. jedoch
Zeigt nur die verfügbaren Optionen an, wenn der Benutzer dies getan hat schon etwas eingetippt in das Eingabefeld.
Wir können ein Eingabefeld nutzbarer machen, wenn wir es Benutzern ermöglichen Zugriff auf die vollständige Liste der Optionen zu jeder Zeit während der Eingabe.
In diesem Beitrag werden wir sehen, wie man eine erstellt Dropdown-Liste, die jederzeit durchsuchbar ist Verwendung der und
HTML-Elemente und ein wenig JavaScript.
1. Erstellen Sie einen Datalisten mit Optionen
Zuerst erstellen wir eine Datalist für verschiedene Texteditoren. Stellen Sie sicher, dass der Wert von Liste
Attribut des Etikett ist das gleiche wie das
Ich würde
des tag - so binden wir sie aneinander.
2. Machen Sie den Datalist sichtbar
Standardmäßig ist die HTML-Element ist versteckt. Wir können es nur sehen, wenn wir Beginnen Sie mit der Eingabe einer Eingabe in das Feld, an das der Datalist angeschlossen ist.
Es gibt jedoch eine Möglichkeit, den Inhalt des Datalisten "zu erzwingen" (d. H. Alle Optionen). auf der Webseite erscheinen. Wir müssen nur ein passendes geben Anzeige
Eigentumswert außer keiner
, zum Beispiel Bildschirmsperre;
.
datalist display: block;
Die angezeigten Optionen sind noch nicht auswählbar An dieser Stelle nur der Browser macht die Optionen es findet sich innerhalb des Datengebers.
Wie bereits erwähnt, aufgrund des eingebauten Verhaltens des Element, Ein Teil der Optionen wird bereits angezeigt und kann ausgewählt werden, aber nur, wenn der Benutzer beginnt, eine Zeichenfolge einzugeben, zu der der Browser fähig ist Finden Sie eine passende Option.
Wir müssen auch einen Mechanismus finden, den wir machen können alles Optionen (auf dem obigen Screenshot, der unter der Dropdown-Liste angezeigt wird) wählbar beim jeder andere Punkt des Eingabeaufnahmevorgangs - Wenn Benutzer die Optionen auschecken möchten, bevor sie etwas eingeben oder wenn sie bereits etwas in das Eingabefeld aufgenommen haben.
3. Bringen Sie das ein
HTML-Element
Es gibt zwei Möglichkeiten, Benutzer zu aktivieren Alle Optionen anzeigen und auswählen wann immer sie wollen:
- Wir können ein hinzufügen Klicken Sie auf den Ereignishandler zu jeder Option, und verwenden Sie sie, um eine Option auszuwählen, wenn sie angeklickt wird, oder wir können auch verwandeln die Optionen in eine echte Dropdown-Liste, die standardmäßig wählbar ist.
- Wir können wickeln Sie die Optionen ein der datalist mit dem
HTML-Element.
Wir wählen die zweite Methode, da sie einfacher ist und verwendet werden darf als Rückfallmechanismus in Browsern, die das nicht unterstützen Element. Wenn ein Browser die Datenanzeige nicht rendern und anzeigen kann, ist dies der Fall macht das
Element mit all seinen Optionen stattdessen.
Standardmäßig ist die wählen
Element erscheint nicht in Browsern, die Datalist unterstützen, d. h. bis wir zwinge den datalist, seinen inhalt zu rendern mit dem Bildschirmsperre;
CSS-Regel.
Also wenn wir wickeln Sie die Optionen ein aus dem obigen Beispiel (wo Datalist hat Bildschirmsperre
) mit dem HTML-Tag, der Code sieht wie folgt aus:
Zu Alle Optionen anzeigen von wählen
In der Dropdown-Liste müssen wir die Attribute verwenden mehrere
um mehr als eine Option anzuzeigen, und Größe
für die Anzahl der Optionen, die wir zeigen möchten.
4. Fügen Sie eine Umschaltfläche hinzu
Die vollständige Dropdown-Liste soll angezeigt werden nur wenn der Benutzer klickt auf eine Umschaltfläche Neben dem Eingabefeld wird angezeigt, während der Benutzer die Arbeitsdatenliste eingibt. Lasst uns ändere das Anzeige
Wert des Datengebers zu keiner
, und auch fügen Sie eine Schaltfläche hinzu neben dem Eingabefeld, um das zu wechseln Anzeige
Wert des Datengebers, und folglich das Auftreten von wählen
.
datalist Anzeige: keine;
Außerdem müssen Sie in der HTML-Datei die folgende Schaltfläche über der Datenliste hinzufügen:
Nun sehen wir uns das JavaScript an. Zuerst definieren wir die Ausgangsvariablen.
button = document.querySelector ('button'); datalist = document.querySelector ('datalist'); select = document.querySelector ('select'); options = select.options;
Als nächstes müssen wir Einen Ereignis-Listener hinzufügen (toggle_ddl
) zum Klickereignis der Schaltfläche, die Wechseln Sie das Erscheinungsbild des Datalisten.
button.addEventListener ('click', toggle_ddl);
Dann definieren wir das toggle_ddl ()
Funktion. Dafür müssen wir Überprüfen Sie den Wert von datalist.style.display
Eigentum. Wenn es sich um eine leere Zeichenfolge handelt, ist der Datalist versteckt, also müssen wir das tun setze seinen Wert auf Block
, und auch zu Ändern Sie die Schaltfläche von einem nach unten zeigenden Pfeil zu einem nach oben zeigenden Pfeil.
Funktion toggle_ddl () / * wenn DDL ausgeblendet ist * / 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 = "âÂ-¼";
Das hide_select ()
Funktion verbirgt den datalist durch die Einstellung der datalist.style.display
Eigenschaft zurück in eine leere Zeichenfolge, und ändern Sie den Button-Pfeil zurück, um nach unten zu zeigen.
Wenn in den endgültigen Einstellungen die Eingabefelder eine zuvor ausgewählte Option enthalten und die Dropdown-Liste auch durch einen späteren Klicken der Schaltfläche ausgelöst wurde, wird die zuvor gewählte Option ebenfalls ausgewählt muss als ausgewählt angezeigt werden in der Dropdown-Liste.
So fügen wir den folgenden hervorgehobenen Code hinzu toggle_ddl ()
Funktion:
Funktion toggle_ddl () / * wenn DDL ausgeblendet ist * / if (datalist.style.display === ") / * show DDL * / datalist.style.display = 'block'; this.textContent =" ࢲ "; var val = input.value; for (var i = 0; iWir möchten auch die Dropdown-Liste ausblenden, wenn der Benutzer in das Eingabefeld eingibt (zu dem Zeitpunkt, zu dem der Datalist angezeigt wird)..
/ * Wenn der Benutzer in ein Textfeld eingeben möchte, blende DDL aus * / input = document.querySelector ('input'); input.addEventListener ('focus', hide_select);5. Eingabe aktualisieren, wenn eine Option ausgewählt ist
Zum Schluss noch füge hinzu ein
Veränderung
Eventhandler zumWenn der Benutzer eine Option aus der Dropdown-Liste auswählt, wird dessen Wert im angezeigt
Feld auch.
/ * Wenn der Benutzer eine Option aus DDL auswählt, schreiben Sie diese in das Textfeld. * / select.addEventListener ('change', fill_input); function fill_input () input.value = Optionen [this.selectedIndex] .value; hide_select ();Nachteile
Der Hauptnachteil dieser Technik ist die Fehlen eines direkten Weges, um die
Element mit CSS (das Aussehen der
und
Tags variieren in verschiedenen Browsern).
In Firefox wird der Eingabetext auch mit Optionen verglichen enthält die Eingabezeichen, während andere Browser mit Optionen übereinstimmen anfangen mit diese Zeichen. Die W3C-Spezifikation für datalist legt nicht explizit fest, wie der Abgleich erfolgen soll.
Abgesehen davon ist diese Methode gut und funktioniert in allen gängigen Browsern, In Browsern, in denen dies möglicherweise nicht funktioniert, können Benutzer weiterhin die Dropdown-Liste sehen. Nur die Vorschläge werden nicht angezeigt.
Sehen Sie sich die endgültige Demo mit ein wenig CSS-Styling an: