aria-invalid im Formular

Ein Feld sagt, dass etwas nicht stimmt

Feld, Fehlermeldung, Beschriftung: drei Stellen im Formular mit Fehler.

Website prüfen
Beispiel im Prüfbericht Markierter Befund
Markierter Befund · Kritisch · WCAG 4.1.2aria-expanded="maybe" ist ungültig

Fehlerzustand im Bild

Der Fehler muss an drei Stellen ankommen

Sichtbarer Text, Feldzustand und Korrekturhinweis wechseln gemeinsam.

Konzeptansicht: ein E-Mail-Feld in drei ZuständenDie Felder sind Abbildungen, keine Eingabefelder.

01 Vor der Prüfung

E-Mail-Adresse
name@

Noch keine Fehlermeldung

aria-invalid
nicht gesetzt
Fehlertext
hidden

Ansage „E-Mail-Adresse, Eingabefeld“

Prüfung meldet einen Fehler Nach dem Absenden werden Feldzustand und Fehlermeldung gemeinsam gesetzt.

02 Nach dem Absenden

E-Mail-Adresse Fehler
name@

Bitte eine vollständige E-Mail-Adresse eingeben.

aria-invalid
true
aria-describedby
mail-fehler

Ansage „E-Mail-Adresse, ungültige Eingabe. Bitte eine vollständige E-Mail-Adresse eingeben.“

Korrektur nimmt den Fehler zurück Sobald der Wert gültig ist, verschwinden Fehlerzustand und Fehlermeldung.

03 Nach der Korrektur

E-Mail-Adresse Korrigiert
name@example.de

Fehlermeldung wieder verborgen

aria-invalid
entfernt
Fehlertext
hidden

Ansage „E-Mail-Adresse, Eingabefeld“

Die Verdrahtung des Fehlerfalls

Jede Verbindung hat genau eine Aufgabe.

<label for="mail">E-Mail-Adresse
NameWelches Feld?
aria-invalid="true"Validierung fehlgeschlagen
ZustandWas stimmt nicht?
aria-describedby="mail-fehler"verweist auf den Absatz
BeschreibungWie korrigieren?

Vier gültige Werte, zwei Einsatzgebiete

falsekein erkannter FehlerStandard, auch ohne Attribut
trueValidierung fehlgeschlagentypisch für Formulare
grammarGrammatikfehlerfür bearbeitbaren Text
spellingRechtschreibfehlerfür bearbeitbaren Text

error, yes oder invalid sind keine gültigen Werte.

Das vollständige Feld

<form action="/newsletter" method="post" novalidate>
  <label for="mail">E-Mail-Adresse</label>
  <input id="mail" name="mail" type="email" required
    autocomplete="email" aria-describedby="mail-fehler">
  <p id="mail-fehler" class="fehler" hidden>
    Bitte eine vollständige E-Mail-Adresse eingeben.
  </p>
  <button type="submit">Eintragen</button>
</form>

Das sichtbare label gibt dem Feld seinen Namen. aria-describedby bleibt bestehen; hidden steuert, ob die Meldung verfügbar ist. Der Server muss Eingaben unabhängig davon prüfen.

Beide Richtungen im selben Skript

const formular = document.querySelector('form');
const feld = document.getElementById('mail');
const fehler = document.getElementById('mail-fehler');

function aktualisieren() {
  const ungueltig = !feld.validity.valid;
  fehler.hidden = !ungueltig;
  if (ungueltig) feld.setAttribute('aria-invalid', 'true');
  else feld.removeAttribute('aria-invalid');
  return !ungueltig;
}

formular.addEventListener('submit', (ereignis) => {
  if (aktualisieren()) return;
  ereignis.preventDefault();
  feld.focus();
});

feld.addEventListener('input', () => {
  if (feld.hasAttribute('aria-invalid')) aktualisieren();
});

Erst ein fehlgeschlagenes Absenden setzt true. Beim Korrigieren nimmt dieselbe Funktion Attribut und Text wieder zurück. Der Fokus am Feld verbindet Name, Zustand und Korrekturhinweis zu einer Ansage.

So prüfen Sie den Zustandswechsel

  1. Leer absenden.Fokus und sichtbarer Text landen am Feld.
  2. Ansage prüfen.Name, „ungültig“ und Korrektur sind hörbar.
  3. Adresse ergänzen.Text und aria-invalid verschwinden.
  4. Erneut fokussieren.Die Ansage enthält keinen Fehler mehr.

Aus dem Prüfbericht

Drei Stellen, drei Befunde

Kritisch Der Fehlerzustand trägt einen erfundenen Wert Regel aria-valid-attr-value

aria-invalid="error" gehört nicht zur Werteliste. Für einen gewöhnlichen Validierungsfehler gilt true; nach der Korrektur entfällt das Attribut.

Anleitung: Gültige ARIA-Attributwerte setzen

Zum Mitnehmen

Das Fehlerfeld, korrigiert

Ein gültiger Wert, eine richtige Schreibweise, ein verbundener Name.

Korrektur in 3 Schritten ansehen
  1. Den Fehlerzustand mit true melden

    Für gewöhnliche Validierungsfehler gilt true. Nach der Korrektur wird das Attribut entfernt; grammar und spelling sind eigene Fehlerarten.

    KorrekturvergleichSchritt 1 · HTML

    Vorher

    <input id="mail" type="email" aria-invalid="error"
      aria-describedby="mail-fehler">
    <p id="mail-fehler">Bitte eine Adresse mit @ eingeben.</p>

    Nachher

    <input id="mail" type="email" aria-invalid="true"
      aria-describedby="mail-fehler">
    <p id="mail-fehler">Bitte eine Adresse mit @ eingeben.</p>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Senden Sie das Formular mit leerer E-Mail. Ein Vorleseprogramm sagt am Feld „ungültige Eingabe“.

  2. Den Attributnamen richtig schreiben

    aria-invald wird stillschweigend übergangen. Ein Buchstabe entscheidet, ob der Fehlerzustand überhaupt ankommt.

    KorrekturvergleichSchritt 2 · HTML

    Vorher

    <input id="plz" name="plz" type="text" aria-invald="true">

    Nachher

    <input id="plz" name="plz" type="text" aria-invalid="true">

    Markierte Zeilen wurden geändert

    So prüfen Sie es Suchen Sie im Quelltext nach aria-. Jeder Name muss genau so in der ARIA-Liste stehen.

  3. Die Beschriftung mit dem Feld verbinden

    Ein label mit for gibt dem Feld seinen Namen. Ohne Namen bleibt auch eine richtige Fehlermeldung unverständlich.

    KorrekturvergleichSchritt 3 · HTML

    Vorher

    <span>E-Mail</span>
    <input id="mail" type="email" aria-invalid="true">

    Nachher

    <label for="mail">E-Mail</label>
    <input id="mail" type="email" aria-invalid="true">

    Markierte Zeilen wurden geändert

    So prüfen Sie es Klicken Sie auf das Wort „E-Mail“. Springt der Cursor ins Feld, ist der Name verbunden.

Werbung

Kostenloser Website-Barrierefreiheits-Check

Website auf Barrierefreiheit prüfen.

Technische WCAG-Warnsignale erkennen. Kritische Stellen zuerst prüfen.

Der Website-Check ist bereit.

Werbung

Ein letzter Schritt

Prüfen, bevor Sie gehen.

Finden Sie automatisch erkennbare Barrieren auf Ihrer eigenen Website.

Website prüfen

Kostenlos starten · keine Installation

Automatisches Screening. Tastaturbedienung und Screenreader bleiben manuelle Prüfung.