HTML für numerische Postleitzahlen

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Ich habe gerade diese Diskussion auf Twitter mitbekommen, angestoßen von Dave.

Es scheint, als wären Postleitzahlen nur Zahlen, oder? Also…

<input id="zip" name="zip" type="number">

Der Vorteil liegt darin, kostenlose Validierung durch den Browser nutzen zu können und auf mobilen Geräten eine hilfreichere, zahlenbasierte Tastatur zu aktivieren.

Aber Zach wies darauf hin, dass type="number" für Postleitzahlen problematisch ist, da Postleitzahlen führende Nullen haben können (z. B. könnte eine Bostoner Postleitzahl 02119 sein). Filament Group hat auch eine kleine Bibliothek zur Behebung dieses Problems.

Das ist die perfekte Aufgabe für inputmode, wie Jeremy vorschlägt.

<input id="zip" name="zip" type="text" inputmode="numeric" pattern="^(?(^00000(|-0000))|(\d{5}(|-\d{4})))$">

Aber die Unterstützung ist zum Zeitpunkt der Veröffentlichung ziemlich schlecht.

Ein paar Leute erwähnten den Versuch, type="tel" dafür zu missbrauchen, aber das hat seine eigenen Nachteile, wie z. B. die Ablehnung korrekt formatierter 9-stelliger Postleitzahlen.

Postleitzahlen sehen zwar wie Zahlen aus, werden aber wahrscheinlich am besten als Zeichenketten behandelt. Eine weitere Option ist, es bei einem text-Eingabefeld zu belassen, aber mit pattern Zahlen zu erzwingen, wie Pamela Fox dokumentiert.

<input id="zip" name="zip" type="text" pattern="[0-9]*">

Wie viele in den Kommentaren angemerkt haben, ist es erwähnenswert, dass numerische Muster für Postleitzahlen am besten für die USA geeignet sind, da viele Codes für andere Länder Zahlen *und* Buchstaben enthalten.