<input type="date">
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.
<input>
Elemente vom Typ type="date"
erstellen Eingabefelder, die es dem Benutzer ermöglichen, ein Datum einzugeben. Die Darstellung des Datums-Picker-Benutzerinterfaces variiert je nach Browser und Betriebssystem. Der Wert wird auf das Format yyyy-mm-dd
normalisiert.
Der resultierende Wert enthält das Jahr, den Monat und den Tag, jedoch nicht die Uhrzeit. Die Eingabetypen time und datetime-local unterstützen Zeit- und Datum+Uhrzeit-Eingaben.
Probieren Sie es aus
<label for="start">Start date:</label>
<input
type="date"
id="start"
name="trip-start"
value="2018-07-22"
min="2018-01-01"
max="2018-12-31" />
label {
display: block;
font:
1rem "Fira Sans",
sans-serif;
}
input,
label {
margin: 0.4rem 0;
}
Wert
Ein String, der das im Eingabefeld eingegebene Datum darstellt. Das Datum wird entsprechend dem Format von Datums-Strings formatiert.
Sie können einen Standardwert für die Eingabe mit einem Datum innerhalb des value
Attributs festlegen, wie folgt:
<input type="date" value="2017-06-01" />
Hinweis:
Das angezeigte Datumsformat wird sich vom tatsächlichen value
unterscheiden — das angezeigte Datum wird basierend auf der Lokalisation des Browsers des Benutzers formatiert, aber der geparste value
ist immer im Format yyyy-mm-dd
.
Sie können den Datumswert in JavaScript mit den Eigenschaften value
und valueAsNumber
des HTMLInputElement
abrufen und festlegen. Zum Beispiel:
const dateControl = document.querySelector('input[type="date"]');
dateControl.value = "2017-06-01";
console.log(dateControl.value); // prints "2017-06-01"
console.log(dateControl.valueAsNumber); // prints 1496275200000, a JavaScript timestamp (ms)
Dieser Code findet das erste <input>
Element, dessen type
date
ist, und setzt dessen Wert auf 2017-06-01
(1. Juni 2017). Anschließend wird dieser Wert sowohl im String- als auch im Zahlenformat zurückgelesen.
Zusätzliche Attribute
Die allgemeinen Attribute, die für alle <input>
Elemente gelten, sind auch für date
-Eingaben anwendbar, könnten jedoch deren Darstellung nicht beeinflussen. Zum Beispiel könnten size
und placeholder
nicht funktionieren. date
Eingaben haben die folgenden zusätzlichen Attribute.
max
Das späteste akzeptierbare Datum. Wenn der in das Element eingegebene value
danach erfolgt, schlägt das Element beim Einschränkungsprüfung fehl. Wenn der Wert des max
Attributs kein mögliches Datums-String im Format yyyy-mm-dd
ist, dann hat das Element keinen maximalen Datumswert.
Wenn sowohl max
als auch min
Attribute festgelegt sind, muss dieser Wert ein Datums-String sein, der später oder gleich dem im min
Attribut ist.
min
Das früheste akzeptierbare Datum. Wenn der in das Element eingegebene value
vorher passiert, schlägt das Element beim Einschränkungsprüfung fehl. Wenn der Wert des min
Attributs kein mögliches Datums-String im Format yyyy-mm-dd
ist, dann hat das Element keinen minimalen Datumswert.
Wenn sowohl max
als auch min
Attribute festgelegt sind, muss dieser Wert ein Datums-String sein, der früher oder gleich dem im max
Attribut ist.
step
Das step
Attribut ist eine Zahl, die die Granularität angibt, die der Wert einhalten muss, oder der spezielle Wert any
, der unten beschrieben wird. Nur Werte, die gleich dem Basisschritt (min
falls angegeben, value
ansonsten, und ein angemessener Standardwert, wenn keiner von beiden angegeben ist) sind, sind gültig.
Ein String-Wert von any
bedeutet, dass kein Schritt impliziert wird und jeder Wert erlaubt ist (außer anderen Einschränkungen, wie min
und max
).
Hinweis: Wenn die vom Benutzer eingegebenen Daten nicht der Schrittkonfiguration entsprechen, kann der Benutzeragent den nächsten gültigen Wert runden und bevorzugt Zahlen in positiver Richtung, wenn es zwei gleich nahe Optionen gibt.
Für date
Eingaben wird der Wert von step
in Tagen angegeben und als eine Anzahl von Millisekunden behandelt, die 86.400.000 mal dem step
Wert entspricht (der zugrundeliegende numerische Wert ist in Millisekunden). Der Standardwert von step
ist 1, was 1 Tag anzeigt.
Hinweis:
Die Angabe von any
als Wert für step
hat den gleichen Effekt wie 1
für date
Eingaben.
Verwendung von Dateneingaben
Dateneingaben bieten eine einfache Oberfläche zur Auswahl von Daten und normalisieren das an den Server gesendete Datenformat unabhängig von der Lokalisierung des Benutzers.
In diesem Abschnitt betrachten wir grundlegende und dann komplexere Verwendungen von <input type="date">
.
Grundlegende Verwendung von Datum
Die einfachste Verwendung von <input type="date">
beinhaltet ein <input>
zusammen mit seinem <label>
, wie unten zu sehen ist:
<form action="https://example.com">
<label>
Enter your birthday:
<input type="date" name="bday" />
</label>
<p><button>Submit</button></p>
</form>
Dieses HTML übermittelt das eingegebene Datum unter dem Schlüssel bday
an https://example.com
— was in einer URL wie https://example.com/?bday=1955-06-08
resultiert.
Festlegung von maximalen und minimalen Daten
Sie können die Attribute min
und max
verwenden, um die vom Benutzer auswählbaren Daten einzuschränken. Im folgenden Beispiel legen wir ein Mindestdatum von 2017-04-01
und ein Höchstdatum von 2017-04-30
fest:
<form>
<label>
Choose your preferred party date:
<input type="date" name="party" min="2017-04-01" max="2017-04-30" />
</label>
</form>
Das Ergebnis ist, dass nur Tage im April 2017 ausgewählt werden können — die Monats- und Jahresabschnitte des Textfeldes werden nicht bearbeitbar sein, und Daten außerhalb des Aprils 2017 können im Auswahl-Widget nicht ausgewählt werden.
Sie können das Attribut step
verwenden, um die Anzahl der Tage zu variieren, die jedes Mal übersprungen werden, wenn das Datum inkrementiert wird (z. B. um nur Samstage auswählbar zu machen).
Kontrolle der Eingabegröße
Validierung
Standardmäßig validiert <input type="date">
den eingegebenen Wert nicht über dessen Format hinaus. Die Schnittstellen lassen in der Regel nichts eingeben, was kein Datum ist — was hilfreich ist.
Wenn Sie min
und max
verwenden, um verfügbare Daten einzuschränken (siehe Einstellung von maximalen und minimalen Daten), deaktiviert das Form-Element ungültige Daten und zeigt einen Fehler an, wenn Sie versuchen, ein Datum außerhalb der Grenzen zu übermitteln.
Sie können auch das Attribut required
verwenden, um das Ausfüllen des Datumsfeldes verpflichtend zu machen — ein Fehler wird angezeigt, wenn Sie versuchen, ein leeres Datumsfeld zu übermitteln.
Sehen wir uns ein Beispiel für minimale und maximale Daten an, und machen wir auch ein Feld erforderlich:
<form>
<label>
Choose your preferred party date (required, April 1st to 20th):
<input
type="date"
name="party"
min="2017-04-01"
max="2017-04-20"
required />
<span class="validity"></span>
</label>
<p>
<button>Submit</button>
</p>
</form>
Wenn Sie versuchen, das Formular mit einem unvollständigen Datum (oder mit einem Datum außerhalb der festgelegten Grenzen) zu übermitteln, zeigt der Browser einen Fehler an. Probieren Sie das Beispiel jetzt aus:
Hier ist das im obigen Beispiel verwendete CSS. Wir nutzen die :valid
und :invalid
Pseudo-Elemente, um ein Symbol neben der Eingabe hinzuzufügen, basierend darauf, ob der aktuelle Wert gültig ist oder nicht. Wir mussten das Symbol auf einem <span>
neben der Eingabe platzieren, nicht auf der Eingabe selbst, da zumindest in Chrome der erzeugte Inhalt des Eingabefeldes innerhalb des Form-Elements platziert wird und nicht effektiv gestylt oder angezeigt werden kann.
label {
display: flex;
align-items: center;
}
span::after {
padding-left: 5px;
}
input:invalid + span::after {
content: "✖";
}
input:valid + span::after {
content: "✓";
}
Warnung: Client-seitige Formularvalidierung ist kein Ersatz für die Validierung auf dem Server. Es ist einfach für jemanden, das HTML zu ändern oder Ihr HTML vollständig zu umgehen und die Daten direkt an Ihren Server zu senden. Wenn Ihr Server die empfangenen Daten nicht validiert, könnte dies zu einem Desaster führen mit Daten, die schlecht formatiert, zu groß, von falschem Typ usw. sind.
Beispiele
In diesem Beispiel erstellen wir einen Datumsauswähler mit dem nativen <input type="date">
Picker.
HTML
Das HTML sieht folgendermaßen aus:
<form>
<div class="nativeDatePicker">
<label for="bday">Enter your birthday:</label>
<input type="date" id="bday" name="bday" />
<span class="validity"></span>
</div>
</form>
CSS
Das CSS sieht folgendermaßen aus:
input:invalid + span::after {
content: " ✖";
}
input:valid + span::after {
content: " ✓";
}
Ergebnisse
Technische Übersicht
Wert | Ein String, der ein Datum im YYYY-MM-DD Format darstellt, oder leer |
Ereignisse | [`change`](/de/docs/Web/API/HTMLElement/change_event) und [`input`](/de/docs/Web/API/Element/input_event) |
Unterstützte allgemeine Attribute |
autocomplete ,
list ,
readonly ,
step
|
IDL-Attribute |
value ,
valueAsDate ,
valueAsNumber
|
DOM-Schnittstelle | [`HTMLInputElement`](/de/docs/Web/API/HTMLInputElement) |
Methoden | [`select()`](/de/docs/Web/API/HTMLInputElement/select), [`stepDown()`](/de/docs/Web/API/HTMLInputElement/stepDown), [`stepUp()`](/de/docs/Web/API/HTMLInputElement/stepUp) |
Implizierte ARIA-Rolle | keine entsprechende Rolle |
Spezifikationen
Specification |
---|
HTML # date-state-(type=date) |
Browser-Kompatibilität
Siehe auch
- Das generische
<input>
Element und die Schnittstelle zur Manipulation,HTMLInputElement
- Datum- und Uhrzeit-Picker Tutorial
- Im HTML verwendete Datums- und Zeitformate