<input type='date'>
<input>
-Elemente mit type="date"
erstellen Eingabefelder, die es dem Benutzer ermöglichen, ein Datum einzugeben. Das Erscheinungsbild der Datumsauswahl-Eingabeoberfläche variiert je nach Browser und Betriebssystem. Der Wert wird im Format yyyy-mm-dd
normalisiert.
Der resultierende Wert enthält das Jahr, den Monat und den Tag, jedoch nicht die Zeit. Die Eingabetypen time und datetime-local unterstützen Zeit- und Datum+Zeit-Eingaben.
Probieren Sie es aus
Wert
Ein String, der das im Eingabefeld eingegebene Datum darstellt. Das Datum ist entsprechend dem Format von Datumsstrings formatiert.
Sie können einen Standardwert für die Eingabe mit einem Datum im value
-Attribut festlegen, wie folgt:
<input type="date" value="2017-06-01" />
Hinweis: Das angezeigte Datumsformat unterscheidet sich vom tatsächlichen value
— das angezeigte Datum wird basierend auf der Spracheinstellung des Browsers des Benutzers formatiert, aber das geparste value
ist immer formatiert als yyyy-mm-dd
.
Sie können den Datumswert in JavaScript mit den Eigenschaften HTMLInputElement
value
und valueAsNumber
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 seinen Wert auf 2017-06-01
(1. Juni 2017). Anschließend liest er diesen Wert in String- und Zahlenformaten zurück.
Zusätzliche Attribute
Die gemeinsamen Attribute für alle <input>
-Elemente gelten auch für date
-Eingaben, können jedoch die Darstellung nicht beeinflussen. Zum Beispiel funktionieren size
und placeholder
möglicherweise nicht. date
-Eingaben haben die folgenden zusätzlichen Attribute.
max
Das späteste akzeptierte Datum. Wenn das in das Element eingegebene value
danach liegt, schlägt die Einschränkungsvalidierung des Elements fehl. Wenn der Wert des max
-Attributs kein mögliches Datum im Format yyyy-mm-dd
ist, hat das Element keinen maximalen Datumswert.
Wenn sowohl die Attribute max
als auch min
festgelegt sind, muss dieser Wert ein Datumsstring sein, der nach oder gleich dem im min
-Attribut ist.
min
Das früheste akzeptierte Datum. Wenn das in das Element eingegebene value
vorher liegt, schlägt die Einschränkungsvalidierung des Elements fehl. Wenn der Wert des min
-Attributs kein mögliches Datum im Format yyyy-mm-dd
ist, hat das Element keinen minimalen Datumswert.
Wenn sowohl die Attribute max
als auch min
festgelegt sind, muss dieser Wert ein Datumsstring sein, der vor oder gleich dem im max
-Attribut ist.
step
Das step
-Attribut ist eine Zahl, die die Granularität angibt, an die der Wert gebunden sein muss, oder der besondere Wert any
, der unten beschrieben wird. Nur Werte, die dem Basisschritt (min
falls angegeben, value
andernfalls und ein geeigneter Standardwert, wenn keiner dieser Werte angegeben ist) entsprechen, sind gültig.
Ein Stringwert von any
bedeutet, dass kein Schritt impliziert wird und jeder Wert zulässig ist (abgesehen von anderen Einschränkungen wie min
und max
).
Hinweis: Wenn die vom Benutzer eingegebenen Daten nicht der Schritt-Konfiguration entsprechen, kann der Benutzeragent auf den nächsten gültigen Wert runden und bevorzugt positive Zahlen, wenn es zwei gleich nahe Optionen gibt.
Bei date
-Eingaben wird der Wert von step
in Tagen angegeben und als Anzahl von Millisekunden betrachtet, die dem step
-Wert mal 86.400.000 entsprechen (der zugrunde liegende numerische Wert ist in Millisekunden). Der Standardwert von step
ist 1, was für 1 Tag steht.
Hinweis: Die Angabe von any
als Wert für step
hat die gleiche Wirkung wie 1
für date
-Eingaben.
Verwendung von Date-Eingaben
Datumseingaben bieten eine einfache Schnittstelle zur Auswahl von Daten und normalisieren das Datenformat, das an den Server gesendet wird, unabhängig von der Lokalisation des Benutzers.
In diesem Abschnitt betrachten wir grundlegende und dann komplexere Verwendungen von <input type="date">
.
Grundlegende Verwendungen von Date
Die einfachste Verwendung von <input type="date">
beinhaltet ein <input>
kombiniert mit seinem <label>
, wie unten gesehen:
<form action="https://example.com">
<label>
Enter your birthday:
<input type="date" name="bday" />
</label>
<p><button>Submit</button></p>
</form>
Dieses HTML sendet das eingegebene Datum unter dem Schlüssel bday
an https://example.com
— was zu einer URL wie https://example.com/?bday=1955-06-08
führt.
Festlegen von maximalen und minimalen Daten
Sie können die Attribute min
und max
verwenden, um die vom Benutzer wählbaren Daten einzuschränken. Im folgenden Beispiel setzen wir ein Mindestdatum auf 2017-04-01
und ein Höchstdatum auf 2017-04-30
:
<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 — der Monats- und Jahresteil des Textfeldes wird nicht bearbeitbar sein, und Daten außerhalb von April 2017 können im Auswahl-Widget nicht ausgewählt werden.
Sie können das step
-Attribut verwenden, um die Anzahl der Tage zu variieren, die bei jeder Erhöhung des Datums übersprungen werden (z.B. um nur Samstage auswählbar zu machen).
Steuerung der Eingabegröße
Validierung
Standardmäßig validiert <input type="date">
den eingegebenen Wert nicht über sein Format hinaus. Die Schnittstellen erlauben im Allgemeinen nicht, dass Sie etwas eingeben, das kein Datum ist — was hilfreich ist.
Wenn Sie min
und max
verwenden, um die verfügbaren Daten einzuschränken (siehe Festlegen von maximalen und minimalen Daten), deaktiviert das Formularelement ungültige Daten und zeigt einen Fehler an, wenn Sie versuchen, ein Datum außerhalb der Grenzen zu übermitteln.
Sie können auch das required
-Attribut verwenden, um das Ausfüllen des Datums obligatorisch zu machen — ein Fehler wird angezeigt, wenn Sie versuchen, ein leeres Datumsfeld zu übermitteln.
Lassen Sie uns ein Beispiel für minimale und maximale Daten betrachten und auch ein Feld erforderlich machen:
<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 einem Datum außerhalb der festgelegten Grenzen) abzusenden, zeigt der Browser einen Fehler an. Jetzt können Sie das Beispiel ausprobieren:
Hier ist das im obigen Beispiel verwendete CSS. Wir nutzen die :valid
- und :invalid
-Pseudoelemente, um ein Symbol neben der Eingabe hinzuzufügen, basierend darauf, ob der aktuelle Wert gültig ist. Wir mussten das Symbol auf einem <span>
neben der Eingabe platzieren, nicht auf der Eingabe selbst, weil in Chrome zumindest der generierte Inhalt des Eingabefeldes innerhalb des Formularelements 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: Die 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 eine Katastrophe mit falsch formatierten, zu großen, vom falschen Typ usw. Daten eintreten.
Beispiele
In diesem Beispiel erstellen wir eine Datumsauswahl 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 Zusammenfassung
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 gemeinsame 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) |
Implizite ARIA-Rolle | keine entsprechende Rolle |
Spezifikationen
Specification |
---|
HTML Standard # date-state-(type=date) |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Das generische
<input>
-Element und die Schnittstelle zur Manipulation,HTMLInputElement
- Datum- und Zeit-Auswahl-Leitfaden
- In HTML verwendete Datums- und Zeitformate
- Kompatibilität von CSS-Eigenschaften