Formulare sammeln Eingaben von Besucherinnen und Besuchern: Anmeldung, Suche, Kontakt, Bestellung.
Ergebnis
<form>umschließt alles.actionist die Adresse, an die gesendet wird,methodistget(Daten in der Adresse, für Suchen) oderpost(Daten im Anfragekörper, für alles Sensible).<label>ist Pflicht für jedes Feld. Überforundidgehört er zum Feld; ein Klick auf den Text fokussiert das Feld, und Screenreader lesen ihn vor.namebestimmt den Namen, unter dem der Wert an den Server geht. Felder ohnenamewerden nicht gesendet.
Eingabetypen
Ergebnis
Der richtige type bringt auf Handys die passende Tastatur, prüft Eingaben und liefert Bedienelemente wie Datumswähler.
Auswahlfelder
Ergebnis
- Radio-Buttons mit gleichem
namebilden eine Gruppe (nur eine Auswahl) - Checkboxen erlauben mehrere
<fieldset>mit<legend>fasst zusammengehörige Felder zusammen, wichtig für Screenreader
Validierung im Browser
Ergebnis
| Attribut | Bedeutung |
|---|---|
required | Pflichtfeld |
minlength, maxlength | Textlänge |
min, max, step | Zahlen und Datum |
pattern | regulärer Ausdruck |
placeholder | Hinweis im leeren Feld (kein Ersatz für label) |
readonly, disabled | nur lesbar / deaktiviert (wird nicht gesendet) |
autocomplete | Vorschläge: name, email, current-password, postal-code |
autofocus | Fokus beim Laden |
Weitere Elemente
Ergebnis
Der type eines Buttons: submit (senden, Standard in Formularen), reset, button (tut nichts, nur für JavaScript).
Formulare zugänglich machen
- Jedes Feld hat ein sichtbares
<label> - Pflichtfelder sind im Text gekennzeichnet (nicht nur mit Sternchen oder Farbe)
- Fehlermeldungen stehen als Text neben dem Feld und werden per
aria-describedbyverknüpft - Die Tab-Reihenfolge entspricht der Lesereihenfolge
- Genug Abstand und Größe für Touch (mindestens 44 × 44 Pixel)
Ergebnis
Merke
<form action method>mit Feldern, jedes mit<label for>undname- Passende
types (email,number,date, ...) helfen bei Tastatur und Prüfung - Radio-Gruppen über gleichen
name;fieldset/legendfür Gruppen required,pattern,min/maxprüfen im Browser; der Server prüft trotzdemplaceholderersetzt keinlabel
Aufgabe
Baue ein Anmeldeformular mit Name, E-Mail, Passwort, Land (Auswahl), Newsletter (Checkbox) und Absenden-Button, mit sinnvoller Validierung.