Ich habe neulich eine HTML5-Datums-Eingabe gesehen, die den Dropdown-Pfeil auf der rechten Seite hatte, den ich gewohnt bin, anzuklicken, um einen Kalender-Datepicker anzuzeigen, aus dem ich ein Datum auswählen kann.
Normalerweise sieht das so aus

<input type="date">Ich habe vorher Variationen davon gesehen, zum Beispiel wenn Sie eine Wochen-Eingabe anstelle eines Datums verwenden

<input type="week">Aber das habe ich vorher noch nicht gesehen

Es stellt sich heraus, dass dies das Ergebnis ist, wenn Sie eine <datalist> auf eine Eingabe dieses Typs anwenden! Wer hätte das gedacht!
Das Format ist so
<input list="days" type="date">
<datalist id="days">
<option label="Chris' Birthday">1980-08-26</option>
<option label="Apollo 11 Moon Landing">1969-07-20</option>
<option label="DDay">1944-06-06</option>
</datalist>
Die Werte für jede der Optionen müssen nur gültige Werte für die Eingabe sein, andernfalls werden sie einfach nicht angezeigt.
Browser-Unterstützung
Soweit ich verstehe, legt die Spezifikation keine bestimmten UI-Anforderungen für HTML5-Eingabetypen fest. Wenn ein Browser ein Datumsauswahl-Ding bauen möchte, großartig, aber es nicht zu tun verstößt nicht gegen die Spezifikation. Daher ist diese zusätzliche UI-Schönheit auch nicht erforderlich. Ich erwähne das nur, weil das Fehlen von „Unterstützung“ hier nicht darauf hindeutet, dass ein Browser schlechte Arbeit leistet.
Diese schicken Datalist-Eingaben scheinen größtenteils eine Blink-Sache zu sein.
Ein kurzer Check in den aktuellsten Browserversionen, nur mit input type="date" mit einer datalist
- Chrome 38 = funktioniert
- Opera 23 = funktioniert
- Safari 8.0 = unterstützt input type="date" nicht
- Firefox 32 = unterstützt input type="date" nicht
- Internet Explorer 11 = unterstützt input type="date" nicht
- iOS 8.1 = Datum funktioniert / Datalist nicht (siehe Screenshot)
- Android 5 = funktioniert (siehe Screenshot)
- Opera Mobile 11.5 = Datum funktioniert / Datalist nicht
"Unterstützung" bedeutet hier wieder "tut nichts Besonderes für" - fällt aber auf eine benutzbare Texteingabe zurück.


Hier liegt das Problem bei solchen Funktionen. Wenn es nur eine kleine Annehmlichkeit ist, die Sie bieten können, aber nicht entscheidend, nutzen Sie sie einfach und betrachten Sie sie als progressive Verbesserung. Wenn es absolut entscheidend ist, dass alle Benutzer Ihrer Website eine UI zur Auswahl empfohlener Optionen benötigen und Sie Browser unterstützen, die dies nicht tun, benötigen Sie entweder ein Polyfill oder eine benutzerdefinierte Lösung.
Andere Typen
Datum soll nicht den ganzen Spaß haben! Während ich das hier zusammenstellte, bin ich auf Eiji Kitamuras umfassende Testseite für das alles gestoßen. Nicht nur für text und date Eingaben kann datalist funktionieren, sondern für alle Variationen von date Eingaben sowie color und range!
type="range"




type="color"



Das ist ein cooles Konzept, danke fürs Teilen.
Das hat mich gerade ein bisschen umgehauen! Toller Fund, Chris!
Das <code>tag ist eine solche Verbesserung gegenüber der Art und Weise, wie wir Daten eingeben, aber ich finde die Fallback-Option für nicht unterstützte Browser nicht sehr schön, mit nur einer normalen Texteingabe. Firefox sollte so etwas Einfaches unterstützen können. Irgendwelche Vorschläge für einen alternativen Datumsauswähler (nicht jQuery UI)?
KendoUI
Wow, das ist genial :D
@Thore Cardel
Hier ist die gleiche Datalist-Seite, die ein Polyfill verwendet
http://afarkas.github.io/webshim/demos/demos/webforms/datalist-experiment.html?polyfillall
Die neueste Version von Firefox ist 33. Sage ich nur……..
Tolle Tipp, ich bin gespannt, wie anpassbar Datalist sein kann. Auf jeden Fall ist es in seiner Grundform ein großer Gewinn für die Endbenutzer – besonders mobil
Das ist großartig! Weiß jemand, wie man die Sprache des Datumsauswählers ändert? Ich habe versucht, ihn zu deklarieren, aber er wird immer noch auf Englisch angezeigt.
Entschuldigung, ich scheine den Code nicht entkommen zu können: html lang=”fr”
Da der Datumsauswähler ein Browser-Widget ist, entspricht er wahrscheinlich der Systemsprache und nicht der Seitensprache.
Von HTML5 Rocks
Interessant, dass die UI überhaupt nicht in der Spezifikation enthalten ist… Darüber habe ich nie wirklich nachgedacht. Es ist logisch, aber es scheint auch ein wenig gefährlich… Wir haben bereits genug Fragmentierung, mit der wir umgehen müssen. :P Aber ich mag Ihre Sichtweise „betrachten Sie es als progressive Verbesserung“. Danke für die Zusammenfassung!
Ich bin froh, Ihren Newsletter abonniert zu haben!
Danke fürs Teilen
//Ich hoffe, alles wird korrekt formatiert, da die Vorschau nicht funktioniert… Los geht’s.
Ich habe beschlossen, einige Tests in IE.x durchzuführen und meine Ergebnisse waren gemischt
IE11 und IE10: Teilweise Unterstützung, aber sehr fehlerhaft. Beide Browser verhalten sich mit dieser Art von Eingabe genau gleich. Die Datalist funktioniert, wenn Sie auf das Eingabefeld klicken (Sie können die Dropdown-Liste sehen)
aber nur die Labels in den Option-Elementen werden angezeigt, nicht die Werte. Die Eingabesteuerelemente werden ebenfalls nicht angezeigt.
Screenshots
http://imagizer.imageshack.com/img674/9082/LmBZqa.png
http://imagizer.imageshack.com/img674/5867/2RkAsW.png
IE9: Keine Unterstützung+. Labels werden direkt neben dem Eingabefeld angezeigt. Option-Elemente sind gestylt (roter Hintergrund) und das Eingabefeld.
Screenshot
http://imagizer.imageshack.com/img537/8379/RK4dNA.png
IE8: Überhaupt keine Unterstützung. Labels werden direkt neben dem Eingabefeld angezeigt und nichts ist gestylt, außer dem Eingabefeld.
Screenshot
http://imagizer.imageshack.com/img661/2075/dIjmAg.png
Hier ist der Markup, den ich verwendet habe
Dies könnte wirklich bei der Konversion helfen, besonders auf Touch-Geräten. Ich persönlich denke nicht, dass die Standard-Fallback-Option eines Text-Inputs wirklich so schlecht ist.
Es ist schade, dass dies nicht mit funktioniert. Es wäre wirklich cool, die Zahlen, zwischen denen der Benutzer springen kann, steuern zu können.
Schon gut, es scheint, dass es tatsächlich funktioniert, solange die Datalist nur ganze Zahlen enthält.
Außerdem denke ich, dass Ihr Kommentarbereich manchmal den
inlineCode auslässt…Toller Code, ich benutze den Chrome-Browser, ich habe diesen Code für das Datumsformat ausprobiert. Funktioniert wirklich gut. Einfach und so leicht. Wie erstelle ich eine HTML-Tabelle mit dem border-Attribut?
Sie hätten diese Daten als Beispiel nehmen können. ;-)
Über html5
Ich weiß nicht, was nützlich ist, Datalist. Danke dafür :)