form – Formular
<form action="/url/" method="post">…</form>
Ein Formular: eine Gruppe von Feldern, deren Werte der Browser beim Absenden an die URL in action schickt. Abgesendet wird es mit einer Schaltfläche, der Enter-Taste in einem Textfeld oder per Skript. Vor dem Absenden prüft der Browser die Regeln der Felder (required, type="email", min …).
- Standarddarstellung:
display: block - End-Tag: erforderlich
- Inhalt: Fließinhalt, aber ohne ein weiteres
form - Wo es stehen darf: überall, wo Fließinhalt erlaubt ist
- DOM-Schnittstelle:
HTMLFormElement
Attribute
- action – die URL, an die die Daten gehen (ohne sie die URL der Seite).
- method –
get(Standard, Daten in der URL – für Suche und Filter),post(Daten im Körper der Anfrage – für Bestellungen, Anmeldung, alles, was etwas ändert),dialog(schließt eindialog). - enctype – die Kodierung der Daten bei
post:multipart/form-dataist für das Hochladen von Dateien nötig. - novalidate – schaltet die Prüfung der Felder durch den Browser ab.
- autocomplete –
offschaltet das automatische Ausfüllen für das ganze Formular ab. - target, name, accept-charset, rel.
Beispiele
Ein Bestellformular:
<form action="/order/" method="post"> <label for="order-name">Name</label> <input type="text" id="order-name" name="name" autocomplete="name" required> <label for="order-email">E-Mail</label> <input type="email" id="order-email" name="email" autocomplete="email" required> <label for="order-count">Anzahl Brote</label> <input type="number" id="order-count" name="count" min="1" max="20" value="1"> <button type="submit">Bestellen</button> </form>
Eine Datei hochladen:
<form action="/upload/" method="post" enctype="multipart/form-data"> <label for="photo">Foto des Brots (JPEG, max. 5 MB)</label> <input type="file" id="photo" name="photo" accept="image/jpeg"> <button type="submit">Hochladen</button> </form>
Barrierefreiheit
Jedes Feld braucht ein label; Fehlermeldungen gehören neben das Feld und werden mit ihm verbunden (aria-describedby). Ein Formular mit der Rolle form wird erst mit einem zugänglichen Namen (aria-label) zu einem Orientierungspunkt der Seite.
Worauf Sie achten sollten
- Die Prüfung im Browser ist nur eine Hilfe für den Besucher – der Server muss die Daten erneut prüfen, denn sie lassen sich auch ohne das Formular senden.
- Formulare, die etwas ändern (eine Bestellung, eine Passwortänderung), brauchen auf dem Server einen Schutz vor CSRF – ein verstecktes Einmal-Token.
- Ein Formular in einem Formular funktioniert nicht: Der Browser verwirft das innere
<form>. Ein Feld außerhalb des Formulars verbindet das Attributform="formular-id"mit ihm. - Ohne
enctype="multipart/form-data"wird nicht die Datei gesendet, sondern nur ihr Name.
Browserunterstützung
Baseline – weithin verfügbar: funktioniert in allen gängigen Browsern, und das schon lange (spätestens seit 2015). Ab Version: Chrome 1, Firefox 1, Safari 3. Stand: Oktober 2026 (MDN browser-compat-data).
Siehe auch:
input – Eingabefeld
label – Feldbeschriftung
button – Schaltfläche
fieldset – Feldgruppe
select – Auswahlliste
textarea – mehrzeiliger Text
search – Suche