Lange Zeit mussten Sie auf benutzerdefinierte Widget-Bibliotheken oder Hacks zurückgreifen, um eine Datumsauswahl anzuzeigen. Die Webplattform wird jetzt mit der showPicker()
-Methode für HTMLInputElement ausgeliefert. Dies ist eine kanonische Methode, um eine Browserauswahl nicht nur für Datumsangaben, sondern auch für Uhrzeit, Farbe und Dateien anzuzeigen.
Hintergrund
Eine häufige Anfrage von Webentwicklern lautet:
Wie kann ich programmatisch eine Auswahl für Steuerelemente wie das Datum anzeigen lassen?
Stack Overflow
Die aktuellen Antworten sind nicht optimal, da sie auf externen Bibliotheken, CSS-Hacks oder bestimmten Browserverhalten basieren, z. B. der Simulation einer Nutzerinteraktion mit click()
.
Wir freuen uns, Ihnen mitteilen zu können, dass diese Zeiten bald vorbei sein werden, da auf der Webplattform eine kanonische Methode zum Anzeigen einer Browserauswahl für <input>
-Elemente mit den folgenden Typen eingeführt wird: "date"
, "month"
, "week"
, "time"
, "datetime-local"
, "color"
und "file"
. Das funktioniert auch für <input>
-Elemente mit Vorschlägen, die von <datalist>
oder "autocomplete"
generiert werden. Das wird ebenfalls in diesem Artikel behandelt.

Auswahl anzeigen
Wenn Sie showPicker()
für ein <input>
-Element aufrufen, wird dem Nutzer eine Browserauswahl angezeigt. Sie muss als Reaktion auf eine Nutzeraktion wie eine Touch-Geste oder einen Mausklick aufgerufen werden. Andernfalls schlägt sie mit der Ausnahme NotAllowedError
fehl.
Aus Sicherheitsgründen wird eine SecurityError
-Ausnahme ausgelöst, wenn die Methode in einem Cross-Origin-iFrame aufgerufen wird.
Eine Browserauswahl wird angezeigt, wenn das <input>
-Element einen der folgenden Typen hat: "date"
, "month"
, "week"
, "time"
, "datetime-local"
, "color"
oder "file"
.
Im folgenden Beispiel sehen Sie, wie Sie eine Datumsauswahl im Browser öffnen.
<input type="date">
<button>Show the date picker</button>
<script>
const button = document.querySelector("button");
const dateInput = document.querySelector("input");
button.addEventListener("click", () => {
try {
dateInput.showPicker();
// A date picker is shown.
} catch (error) {
// Use external library when this fails.
}
});
</script>
Eine Browserauswahl kann auch mit Elementen aus <datalist>
oder "autocomplete"
vorausgefüllt werden.
Das folgende Beispiel zeigt, wie Sie mit <datalist>
eine Browserauswahl öffnen.
<datalist id="ice-cream-flavors">
<option value="Chocolate"> </option>
<option value="Coconut"> </option>
<option value="Mint"> </option>
<option value="Strawberry"> </option>
<option value="Vanilla"> </option>
</datalist>
<input type="text" list="ice-cream-flavors">
<button>Show the suggestions</button>
<script>
const button = document.querySelector("button");
const iceCreamFlavorsInput = document.querySelector("input");
button.addEventListener("click", () => {
try {
iceCreamFlavorsInput.showPicker();
// A picker containing some ice cream flavors is shown.
} catch (error) {
// Use external library when this fails.
}
});
</script>
Funktionserkennung
So prüfen Sie, ob showPicker()
unterstützt wird:
if ('showPicker' in HTMLInputElement.prototype) {
// showPicker() is supported.
}
Demo
Unter https://cdpn.io/web-dot-dev/fullpage/LEVKVdr finden Sie eine Demo, in der Sie alle vom Browser unterstützten Auswahlmöglichkeiten ausprobieren können.
Unterstützte Browser
showPicker()
ist ab Chrome 99 verfügbar.
Nächste Schritte
Zum Zeitpunkt der Erstellung dieses Dokuments ist showPicker()
neu auf der Webplattform. Für die Funktion sind möglicherweise in Zukunft zusätzliche Arbeiten erforderlich:
- Möglicherweise fügen wir dem
<select>
-Element in Zukunft ein ähnlichesshowPicker()
hinzu, wenn Webentwickler dies wünschen. - Möglicherweise ist
closePicker()
nützlich. Wir könnten diese Funktion hinzufügen, wenn Webentwickler sie anfordern. - Wir könnten eine Berechtigungsrichtlinie hinzufügen, die es ursprungsübergreifenden iFrames erlaubt, Browserauswahlen anzuzeigen, wenn ihre übergeordnete Kette dies zulässt.
Feedback
Das Chrome-Team und die Webstandards-Community möchten gern mehr über Ihre Erfahrungen mit showPicker()
erfahren.
Informationen zum Design
Funktioniert etwas bei showPicker()
nicht wie erwartet? Oder fehlen Methoden oder Eigenschaften, die Sie für die Umsetzung Ihrer Idee benötigen?
Haben Sie eine Frage oder einen Kommentar zum Sicherheitsmodell?
- Melden Sie ein Spezifikationsproblem im WHATWG GitHub-Repository oder fügen Sie Ihre Gedanken zu einem bestehenden Problem hinzu.
Probleme bei der Implementierung?
Haben Sie einen Fehler in der Chrome-Implementierung gefunden? Oder weicht die Implementierung von der Spezifikation ab?
- Melden Sie einen Fehler unter https://new.crbug.com. Geben Sie so viele Details wie möglich an und fügen Sie eine einfache Anleitung zur Reproduktion hinzu.
Unterstützung zeigen
Planen Sie, showPicker()
zu verwenden? Ihre öffentliche Unterstützung hilft dem Chrome-Team, Funktionen zu priorisieren, und zeigt anderen Browseranbietern, wie wichtig es ist, sie zu unterstützen.
Senden Sie einen Tweet an @ChromiumDev und teilen Sie uns mit, wo und wie Sie die Funktion verwenden.
Nützliche Links
- MDN-Dokumentation
- WHATWG-Erläuterung
- WHATWG-Spezifikation
- TAG-Überprüfung
- Demo | Demoquelle
- Chromium-Fehler
- ChromeStatus.com-Eintrag
Danksagungen
Vielen Dank an Joe Medley für die Überprüfung dieses Artikels. Kalenderbild von Eric Rothermel auf Unsplash.