Die HTML5 input Typen

Im vorherigen Artikel haben wir uns das <input> Element angeschaut und die ursprünglichen Werte des type-Attributs behandelt, die seit den Anfängen von HTML verfügbar sind. Jetzt werden wir die Funktionalität einiger später hinzugefügter Input-Typen im Detail betrachten.

Voraussetzungen: Ein grundlegendes Verständnis von HTML.
Ziel: Die neueren Eingabetyp-Werte zu verstehen, die zur Erstellung nativer Formularsteuerungen verfügbar sind, und wie man sie mit HTML implementiert.

Da das Erscheinungsbild von HTML-Formularsteuerelementen erheblich von den Spezifikationen eines Designers abweichen kann, erstellen Webentwickler manchmal ihre eigenen benutzerdefinierten Formularsteuerelemente. Dies behandeln wir in einem fortgeschrittenen Tutorial: Wie man benutzerdefinierte Formular-Widgets erstellt.

E-Mail-Adressfeld

Dieser Feldtyp wird mit dem Wert email für das type Attribut gesetzt:

html

Wenn dieser type verwendet wird, muss der Wert eine E-Mail-Adresse sein, um gültig zu sein. Jeder andere Inhalt führt dazu, dass der Browser beim Absenden des Formulars einen Fehler anzeigt. Sie können dies in der unten stehenden Bildschirmaufnahme sehen.

Eine ungültige E-Mail-Eingabe zeigt die Nachricht "Bitte geben Sie eine E-Mail-Adresse ein." an.

Sie können das multiple Attribut in Kombination mit dem email Eingabetyp verwenden, um mehrere durch Kommas getrennte E-Mail-Adressen in demselben Eingabefeld zuzulassen:

html
<input type="email" id="email" name="email" multiple />

Auf einigen Geräten – insbesondere Touch-Geräten mit dynamischen Tastaturen wie Smartphones – wird möglicherweise eine andere virtuelle Tastatur angezeigt, die für die Eingabe von E-Mail-Adressen besser geeignet ist, einschließlich der @-Taste:

Firefox für Android E-Mail-Tastatur, mit dem @-Zeichen standardmäßig angezeigt.

Hinweis: Sie finden Beispiele für grundlegende Texteingabetypen unter Grundlegende Eingabebeispiele (siehe auch den Quellcode).

Dies ist ein weiterer guter Grund, diese neueren Eingabetypen zu verwenden, um die Benutzererfahrung für Benutzer dieser Geräte zu verbessern.

Client-seitige Validierung

Wie Sie oben sehen können, bietet email – zusammen mit anderen neueren input-Typen – eine eingebaute Client-seitige Fehlerüberprüfung, die vom Browser ausgeführt wird, bevor die Daten an den Server gesendet werden. Es ist eine hilfreiche Unterstützung, um Benutzer dahin zu führen, ein Formular genau auszufüllen, und es kann Zeit sparen: Es ist nützlich zu wissen, dass Ihre Daten nicht korrekt sind, anstatt auf eine Server-Rundsendung warten zu müssen.

Aber es sollte nicht als umfassende Sicherheitsmaßnahme betrachtet werden! Ihre Anwendungen sollten immer Sicherheitsüberprüfungen aller formularübertragenen Daten sowohl auf der Server- als auch auf der Client-Seite durchführen, da die Client-seitige Validierung zu leicht deaktiviert werden kann, sodass böswillige Benutzer weiterhin leicht fehlerhafte Daten an Ihren Server senden können. Lesen Sie Website-Sicherheit, um eine Vorstellung davon zu bekommen, was passieren könnte; die Implementierung der Server-seitigen Validierung liegt zwar außerhalb des Umfangs dieses Moduls, sollte jedoch berücksichtigt werden.

Beachten Sie, dass a@b eine gültige E-Mail-Adresse gemäß den standardmäßig bereitgestellten Einschränkungen ist. Dies liegt daran, dass der email Eingabetyp standardmäßig Intranet-E-Mail-Adressen erlaubt. Um ein anderes Validierungsverhalten zu implementieren, können Sie das pattern Attribut verwenden. Sie können auch die Fehlermeldungen anpassen. Wir werden darüber sprechen, wie Sie diese Funktionen im Artikel Client-seitige Formularvalidierung später verwenden können.

Hinweis: Wenn die eingegebenen Daten keine E-Mail-Adresse sind, wird die :invalid Pseudoklasse übereinstimmen und die validityState.typeMismatch Eigenschaft wird true zurückgeben.

Suchfeld

Suchfelder sind dazu gedacht, um Suchfelder auf Seiten und Apps zu erstellen. Dieser Feldtyp wird festgelegt, indem der Wert search für das type Attribut verwendet wird:

html
<input type="search" id="search" name="search" />

Der Hauptunterschied zwischen einem text-Feld und einem search-Feld liegt in der Stilgestaltung des Erscheinungsbilds durch den Browser. In einigen Browsern werden search-Felder mit abgerundeten Ecken angezeigt. In einigen Browsern wird ein "Ⓧ" Löschsymbol angezeigt, das das Feld bei einem Klick davon befreit. Dieses Löschsymbol erscheint nur, wenn das Feld einen Wert hat, und abgesehen von Safari, wird es nur angezeigt, wenn das Feld fokussiert ist. Zusätzlich kann auf Geräten mit dynamischen Tastaturen die Enter-Taste der Tastatur "search" anzeigen oder ein Lupensymbol darstellen.

Ein weiteres bemerkenswertes Merkmal ist, dass die Werte eines search-Feldes automatisch gespeichert und zur automatischen Vervollständigung auf mehreren Seiten derselben Website wiederverwendet werden können; dies geschieht in den meisten modernen Browsern automatisch.

Telefonnummernfeld

Ein spezielles Feld zum Ausfüllen von Telefonnummern kann erstellt werden, indem tel als Wert des type Attributs verwendet wird:

html
<input type="tel" id="tel" name="tel" />

Wenn auf einem Touch-Gerät mit einer dynamischen Tastatur darauf zugegriffen wird, zeigen die meisten Geräte ein numerisches Tastenfeld, wenn type="tel" vorkommt, was bedeutet, dass dieser Typ nützlich ist, wann immer ein numerisches Tastenfeld nützlich ist, und nicht nur für Telefonnummern verwendet werden muss.

Firefox für Android E-Mail-Tastatur, mit dem &-Zeichen standardmäßig angezeigt.

Aufgrund der großen Vielfalt an Telefonnummernformaten weltweit erzwingt dieser Feldtyp keine Einschränkungen für den vom Benutzer eingegebenen Wert (dies bedeutet, dass es Buchstaben usw. enthalten kann).

Wie wir zuvor erwähnt haben, kann das pattern Attribut verwendet werden, um Einschränkungen durchzusetzen, was Sie im Artikel Client-seitige Formularvalidierung lernen werden.

URL-Feld

Ein spezieller Feldtyp für die Eingabe von URLs kann erstellt werden, indem der Wert url für das type Attribut verwendet wird:

html
<input type="url" id="url" name="url" />

Es fügt dem Feld spezielle Validierungseinschränkungen hinzu. Der Browser meldet einen Fehler, wenn kein Protokoll (wie http:) eingegeben wird oder wenn die URL anderweitig fehlerhaft ist. Auf Geräten mit dynamischen Tastaturen zeigt die Standardtastatur oft einige oder alle der folgenden Tasten wie Doppelpunkt, Punkt und Schrägstrich als Standardtasten an.

Hinweis: Nur weil die URL korrekt formatiert ist, bedeutet das nicht unbedingt, dass sie auf einen Standort verweist, der tatsächlich existiert!

Numerisches Feld

Steuerungen zur Eingabe von Zahlen können mit einem <input> type von number erstellt werden. Diese Steuerung sieht aus wie ein Textfeld, erlaubt jedoch nur Gleitkommazahlen und bietet in der Regel Tasten in Form eines Spinners, um den Wert der Steuerung zu erhöhen und zu verringern. Auf Geräten mit dynamischen Tastaturen wird in der Regel die numerische Tastatur angezeigt.

html
<input type="number" id="number" name="number" />

Mit dem number Eingabetyp können Sie die minimal und maximal erlaubten Werte einschränken, indem Sie die min und max Attribute einstellen.

Sie können auch das step Attribut verwenden, um die Zuwachs- und Abnahmeschritte festzulegen, die durch das Drücken der Spinnertasten verursacht werden. Standardmäßig validiert der numerische Eingabetyp nur, ob die Zahl eine ganze Zahl ist, da das step Attribut standardmäßig 1 beträgt. Um Fließkommazahlen zuzulassen, geben Sie step="any" oder einen spezifischen Wert an, wie step="0.01", um die Gleitpunktzahl einzuschränken. Wenn es weggelassen wird, da der step-Wert standardmäßig 1 ist, sind nur ganze Zahlen gültig.

Sehen wir uns einige Beispiele an:

Dieses Beispiel erstellt eine Zahlsteuerung, deren gültiger Wert auf einen ungleichen Wert zwischen 1 und 10 beschränkt ist. Die Erhöhungs- und Verminderungstasten ändern den Wert um 2, beginnend mit dem min-Wert.

html
<input type="number" name="age" id="age" min="1" max="10" step="2" />

Dieses Beispiel erstellt eine Zahlsteuerung, deren Wert auf einen beliebigen Wert zwischen 0 und 1 einschließlich beschränkt ist und deren Erhöhungs- und Verminderungstasten dessen Wert um 0.01 ändern.

html
<input type="number" name="change" id="pennies" min="0" max="1" step="0.01" />

Der number Eingabetyp ist sinnvoll, wenn der Bereich gültiger Werte begrenzt ist, z.B. das Alter oder die Größe einer Person. Wenn der Bereich zu groß ist, um inkrementelle Erhöhungen sinnvoll erscheinen zu lassen (wie USA-Postleitzahlen, die von 00001 bis 99999 reichen), könnte der tel-Typ eine bessere Option sein. Er bietet das numerische Tastenfeld, während die Spinner-Benutzeroberfläche des Nummerntypen weggelassen wird.

Schieberegler-Steuerungen

Eine andere Möglichkeit, eine Zahl auszuwählen, ist die Verwendung eines Sliders. Man sieht diese häufig auf Websites wie Shopping-Websites, wo man einen maximalen Immobilienpreis angeben möchte, nach dem gefiltert wird. Lassen Sie uns ein Live-Beispiel anschauen, um dies zu veranschaulichen:

In der Praxis sind Slider weniger genau als Textfelder. Daher werden sie verwendet, um eine Zahl auszuwählen, deren exakter Wert nicht zwingend wichtig ist.

Ein Slider wird erstellt, indem das <input> mit seinem type Attribut auf den Wert range gesetzt wird. Der Schieberegler-Daumen kann über Maus oder Touch oder mit den Pfeilen der Tastatur bewegt werden.

Es ist wichtig, Ihren Slider richtig zu konfigurieren. Zu diesem Zweck wird dringend empfohlen, dass Sie die min, max und step Attribute festlegen, die die Minimalwerte, Maximalwerte und Inkrementwerte festlegen.

Werfen wir einen Blick auf den Code hinter dem obigen Beispiel, damit Sie sehen können, wie es gemacht wird. Zuerst einmal das grundlegende HTML:

html
<label for="price">Choose a maximum house price: </label>
<input
  type="range"
  name="price"
  id="price"
  min="50000"
  max="500000"
  step="1000"
  value="250000" />
<output class="price-output" for="price"></output>

Dieses Beispiel erstellt einen Schieberegler, dessen Wert zwischen 50000 und 500000 rangiert und der in Schritten von 1000 auf einmal verändert wird. Wir haben ihm mit dem value-Attribut einen Standardwert von 250000 gegeben.

Ein Problem mit Schiebereglern ist, dass sie keinerlei optisches Feedback darüber geben, was der aktuelle Wert ist. Aus diesem Grund haben wir ein <output> Element beigefügt, um den aktuellen Wert anzuzeigen. Sie könnten einen Eingabewert oder das Ergebnis einer Berechnung in jedem Element anzeigen, aber <output> ist etwas Besonderes – wie <label> – und es kann ein for-Attribut haben, das es Ihnen ermöglicht, es mit dem Element oder den Elementen zu verknüpfen, aus denen der Ausgangswert stammt.

Um tatsächlich den aktuellen Wert anzuzeigen und ihn bei Änderungen zu aktualisieren, müssen Sie JavaScript verwenden, was mit wenigen Anweisungen erreicht werden kann:

js
const price = document.querySelector("#price");
const output = document.querySelector(".price-output");

output.textContent = price.value;

price.addEventListener("input", () => {
  output.textContent = price.value;
});

Hier speichern wir Referenzen auf das range Eingabefeld und das output in zwei Variablen. Dann setzen wir sofort das textContent von output auf den aktuellen value der Eingabe. Schließlich wird ein Ereignis-Listener gesetzt, der sicherstellt, dass wann immer der Bereichs-Schieberegler bewegt wird, der textContent des output auf den neuen Wert aktualisiert wird.

Datums- und Zeitwähler

Im Allgemeinen ist es für eine gute Benutzererfahrung wichtig, beim Sammeln von Datums- und Zeitwerten eine Kalenderauswahl-Benutzeroberfläche bereitzustellen. Diese ermöglichen es Benutzern, Daten auszuwählen, ohne zu einer nativen Kalenderanwendung wechseln zu müssen oder sie gegensätzlich in verschiedenen Formaten einzugeben, die schwer zu parsen sind. Die letzte Minute des vorherigen Jahrtausends kann auf folgende Weisen ausgedrückt werden: 1999/12/31, 23:59, oder 12/31/99T11:59PM.

HTML-Datumssteuerungen sind verfügbar, um diese spezifische Art von Daten zu handhaben, Kalendermodule bereitzustellen und die Daten einheitlich zu machen.

Eine Datums- und Zeitsteuerung wird mit dem <input> Element erstellt und einem geeigneten Wert für das type Attribut, je nachdem, ob Sie Daten, Zeiten oder beides erfassen möchten. Hier ist ein Live-Beispiel:

Werfen wir einen kurzen Blick auf die verschiedenen verfügbaren Typen. Beachten Sie, dass die Verwendung dieser Typen recht komplex ist, insbesondere im Hinblick auf die Unterstützung durch Browser (siehe unten). Um die vollständigen Details zu erfahren, folgen Sie den untenstehenden Links zu den Referenzseiten für jeden Typ, einschließlich detaillierter Beispiele.

datetime-local

<input type="datetime-local"> erstellt ein Widget, um ein Datum mit Zeit ohne spezifische Zeitzoneninformationen anzuzeigen und auszuwählen.

html
<input type="datetime-local" name="datetime" id="datetime" />

month

<input type="month"> erstellt ein Widget, um einen Monat mit Jahr anzuzeigen und auszuwählen.

html
<input type="month" name="month" id="month" />

time

<input type="time"> erstellt ein Widget, um einen Zeitwert anzuzeigen und auszuwählen. Während die Zeit in 12-Stunden-Format angezeigt werden kann, wird der zurückgegebene Wert im 24-Stunden-Format angezeigt.

html
<input type="time" name="time" id="time" />

week

<input type="week"> erstellt ein Widget, um eine Wochennummer und ihr Jahr anzuzeigen und auszuwählen.

Wochen beginnen am Montag und laufen bis Sonntag. Darüber hinaus enthält die erste Woche 1 jedes Jahres den ersten Donnerstag dieses Jahres – der möglicherweise nicht den ersten Tag des Jahres einschließt oder die letzten Tage des Vorjahres enthalten kann.

html
<input type="week" name="week" id="week" />

Beschränkung von Datums-/Zeitwerten

Alle Datums- und Zeitsteuerungen können durch die min und max Attribute eingeschränkt werden, wobei weitere Einschränkungen über das step Attribut (dessen Wert je nach Eingabetyp variiert) möglich sind.

html
<label for="myDate">When are you available this summer?</label><br />
<input
  type="date"
  name="myDate"
  min="2025-06-01"
  max="2025-08-31"
  step="7"
  id="myDate" />

Farbwähler-Steuerung

Farben sind immer ein bisschen schwierig zu handhaben. Es gibt viele Möglichkeiten, sie auszudrücken: RGB-Werte (dezimal oder hexadezimal), HSL-Werte, Schlüsselwörter usw.

Eine color Steuerung kann mit dem <input> Element erstellt werden, dessen type Attribut auf den Wert color gesetzt ist:

html
<input type="color" name="color" id="color" />

Das Klicken auf eine Farbsteuerung zeigt normalerweise die standardmäßige Farbauswahlfunktion Ihres Betriebssystems an, um die Auswahl durchzuführen. Der zurückgegebene Wert ist immer eine kleingeschriebene hexadezimale 6-Wert-Farbe.

Testen Sie Ihre Fähigkeiten!

Sie haben das Ende dieses Artikels erreicht, aber können Sie sich die wichtigsten Informationen merken? Sie finden einige weitere Tests, um zu überprüfen, ob Sie diese Informationen behalten haben, bevor Sie weitermachen – siehe Testen Sie Ihre Fähigkeiten: HTML5-Steuerelemente.

Zusammenfassung

Damit kommen wir zum Ende unserer Tour durch die HTML5-Formular-Eingabetypen. Es gibt einige andere Steuerelementtypen, die aufgrund ihres sehr spezifischen Verhaltens nicht leicht zu gruppieren sind, aber dennoch wichtig zu kennen sind. Diese behandeln wir im nächsten Artikel.

Fortgeschrittene Themen