input type – HTML-Elemente für Eingabefelder

input type search, input type date oder number

input type number color, und email verbessern die Schnittstelle zum Benutzer durch Eingabehilfen für Farben, Zahlen oder Emailadressen oder mit regulären Ausdrücken.

Eingabegeräte wie iPad, iPhone und Android-Geräte unterstützen die Eingabe durch eine passende Tastatur.

18-12-15 SITEMAP CSS HTML JS Basis JS Web Tutorial SVG

input Types – spezielle Eingabefelder

Die speziellen input-Typen können durchaus eingesetzt werden, auch wenn ältere Browser sie nicht erkennen. Browser ohne Support zeigen Eingabefelder wie type=color oder type=search wie input="text" an und liefern die eingegebenen Daten ohne Validierung als Type "text" aus.

Mobile Geräte zeigen je nach Eingabetyp eine angepasste Tastatur, damit der Benutzer nicht erst auf die numerische Tastatur umschalten muss, um eine Zahl einzugeben. Bei date, datetime-local und month erscheinen Kalender und vereinfachen die Eingabe von Datum und Zeit.

android-num
Android numerische Tastatur
ipad-num
iPad numerische Tastatur

Die spezialisierten Eingabefelder reagieren auf CSS und machen falsche Eingaben direkt sichtbar – noch so eine kleine Unterstützung für den User mit minimalem Aufwand.

input:invalid {
	background-color: #ffdddd;
}

input type color

Die immergrünen Browser unterstützen die vorbereiteten Eingabefelder im breiten Rahmen, aber dennoch muss man auf kleine Variationen und große Unterschiede vorbereitet sein.

<input type="color" value="">

Die Browser verlangen eine Hex-Farbe im Format #ccddee. Das kleine Eingabefeld für Farbe läßt sich mit wenig CSS umgestalten: Formulare mit CSS gestalten.

input-type-color-farbfeld

Die modernen Browser spielen bei einem Klick / Touch einen Farbpicker ein – da werden keine Javascript- / jQuery-Plugins mehr gebraucht.

input type="email"

<input type="email" value="">

Browser, die den input type=email unterstützen, validieren das Eingabefeld automatisch. Emailadressen dürfen z.B. nicht mit einer Ziffer anlangen und verlangen ein »@«, aber keine Länderkennung. Sie prüfen die Landeskennung auch nicht, denn es gibt schlichtweg zu viele.

Hier wirkt ebenfalls die Zeile CSS, um dem Benutzer ein "OK" zu signalisieren.

input:invalid {
	background-color: #ffdddd;
}

number

Die Browser akzeptieren nur negative oder positive Zahlen. Safari erlaubt dazu Punkt / Komma und Nachkommastellen.

<input type="number" value="">

range

input type="range" kann viele viele Radio-Buttons auf kleinem Raum ersetzen, wird zum Lautstärkenregler oder ändert Helligkeit und Farbe stufenlos.

<input type="range" min="-5" max="5" step="1.0">

Ein Regler oder »Slider«

Bei type="range" sitzt der Regler per Default am Anfang in der Mitte. Ein bestimmter Anfangswert wird mit value – z.B. value="-5" gesetzt.

search

<input type="search" value="">

Safari, Chrome und Opera zeigen das Eingabefeld mit abgerundeten Ecken und ersparen ein paar Zeilen CSS. In Zukunft können die Browser weitere Funktionen type="search" stecken: z.B. die letzten Suchbegriffe anbieten.

Safari beschränkt das CSS für input type="search", so dass die meisten Stile (padding, font-family, border, background) keine Wirkung zeigen und nicht einmal eine !important-Anweisung Wirkung zeigt.

Nur wenige Eigenschaften, darunter color, text-align, width und letter-spacing beeinflußen die Darstellung der Eingabe in Suchfelder. Als Schriftgrößen lässt Safari nur small, medium und large gelten.

-webkit-appearance: none;

unterdrückt das Apple-CSS und das Eingabefeld sieht aus wie ein normales Eingabefeld mit type="text".

tel

<input type="tel" value="">

url

<input type="url" value="">

Die Browser verlangen eine Eingabe im Format https://domainname. Das Verhalten der Browser ist nicht konsistent: In IE fällt das Eingabefeld vom Typ url zurück zu einem einfachen Textfeld, Opera setzt automatisch ein https:// vor den Textstring, wenn https:// nicht angegeben wurde.

Was bringt ein spezielles input type …?

Es gibt zwar keinen sicheren konsistenten Support für date, color, time, usw., aber da Browser ohne Support auf input type="text" zurückfallen, schadet der Einsatz auch nicht.

Die client- / serverseitige Validierung ersparen die Fehler nicht. Die spezialisierten Eingabefelder informieren Nutzer mit modernen Browsern direkt per CSS. Javascript checkValidity zeigt zusätzlich automatisch angepasste Fehlermeldungen. Der Einsatz lohnt sich.

:invalid { background: #fdd }
:valid { background: #E4F1F9 }
:required { border-color: #800000; border-width: 3px } 

Spezielle Eingabefelder und ihre Darstellung

Bei der Darstellung der Eingabefelder wie input type="color", type="color" oder type="search" muss das CSS in besonderer Weise eingreifen, denn jeder Browser hat eine abweichende Darstellung der speziellen Eingabefelder.

U.U. überschreiben die Browser auch das Placeholder-Attribut (z.B. durch das Farbfeld bei type="color" oder die Maske für die Eingabe des Datums in Chrome / Firefox) Darum sitzt dort kein placeholder-Attribut.