Zum Inhalt springen

Formulare & Tastatur-Bedienung

Ohne Maus oder Touchscreen kann man einen Browser trotzdem bedienen: Dafür gibt es einen eigenen Cursor, den “Fokus”. Er wird meist durch eine blaue Umrandung angezeigt.

Der Fokus kann auf Eingabefeldern, Links oder Buttons liegen. Mit der Tabulator-Taste wird der Fokus bewegt, mit Enter/Space wird das fokussierte Element aktiviert: ein Link wird aufgerufen, ein Button gedrückt, eine Dropdown-Liste geöffnet.

Die Reihenfolge, in der Tab durch die Seite springt, folgt normalerweise der Reihenfolge im HTML - ein weiterer Grund, HTML-Elemente in einer sinnvollen, logischen Reihenfolge zu schreiben, statt sie nur per CSS visuell umzusortieren.

Alle Eingabefelder in einem Formular brauchen eine sichtbare Beschriftung mit <label> - nicht nur einen Placeholder oder Default-Wert:

<p>Schlechtes Beispiel: <input name="bad" placeholder="50kg"></p>
<p>Gutes Beispiel: <label>Gewicht: <input name="good" placeholder="50kg"></label></p>

Siehe MDN WCAG Guide: Text labels and names

Ein Formular mit einem ungültigen Feld zeigt oft nur eine rote Umrandung - das reicht nicht: siehe Farben-Abschnitt, Information nie nur über Farbe vermitteln. Ein Screenreader muss den Fehler zusätzlich vorlesen können.

<label for="email">E-Mail</label>
<input
type="email"
id="email"
aria-describedby="email-error"
aria-invalid="true"
>
<p id="email-error" role="alert">
Bitte eine gültige E-Mail-Adresse eingeben.
</p>
  • aria-describedby="email-error" verknüpft das Eingabefeld mit der Fehlermeldung - ein Screenreader liest sie zusätzlich zum Label vor, sobald das Feld fokussiert wird
  • aria-invalid="true" markiert das Feld selbst als ungültig
  • role="alert" sorgt dafür, dass die Meldung sofort angekündigt wird, sobald sie per JavaScript zur Seite hinzugefügt wird - auch wenn der Fokus gerade woanders liegt