Vorlage für ein Registrierungsformular

Vier Felder, die ihren Zweck nennen

Feldnamen, Eingabezwecke, Zustände, Absendeknopf: vier Stellen im Registrierungsformular.

Website prüfen
Beispiel im Prüfbericht Markierter Befund
Markierter Befund · Kritisch · WCAG 4.1.2Regler ohne zugänglichen Namen

Anatomie einer Registrierung

Jedes Feld braucht mehr als eine sichtbare Kante

Diese Vorlage verbindet sichtbare Beschriftung, Eingabezweck, Hilfe und Fehlerzustand. Die Leitungen im Plan zeigen, welches HTML die jeweilige Information trägt.

Schematische Darstellung · nicht ausfüllbar

Die verdrahtete Eingabemaske

NameBeschriftung trifft Feldfor="email" ↔ id="email"

Der sichtbare Text bleibt auch beim Tippen erhalten.

ZweckBrowser erkennt die Datenartautocomplete="email"

Für ein neues Passwort gilt new-password.

BeschreibungRegel gehört zum Passwortaria-describedby="pw-regeln"

Die Anforderung steht schon vor dem Absenden bereit.

FehlerZustand und Lösung zusammenaria-invalid="true"

Die Meldung nennt das Problem und bleibt am Feld verknüpft.

Die Linien zeigen Beziehungen im Markup. Farbe, Beschriftung und Code nennen jeweils dieselbe Verbindung.

Fehler nicht vorwegnehmen

Drei Zustände beim Passwortvergleich

  1. 1
    Vor dem Absenden

    Regeln sind sichtbar. Das Feld trägt noch keinen Fehlerzustand.

  2. 2
    Nach einem Fehlversuch

    Meldung einsetzen, aria-invalid="true" setzen und den Fokus zur Wiederholung führen.

  3. 3
    Nach der Korrektur

    Wenn beide Werte gleich sind, Meldung und veralteten Fehlerzustand entfernen.

Vollständige Vorlage

HTML und lokaler Passwortvergleich

Der Server prüft die Werte erneut und liefert die endgültige Antwort.

registrieren.htmlMarkup
<h1>Konto anlegen</h1>
<form id="registrierung" action="/registrieren" method="post">
  <div>
    <label for="name">Vor- und Nachname</label>
    <input id="name" name="name" required
      autocomplete="name">
  </div>

  <div>
    <label for="email">E-Mail-Adresse</label>
    <input id="email" name="email" type="email" required
      autocomplete="email">
  </div>

  <div>
    <label for="pw">Passwort</label>
    <input id="pw" name="passwort" type="password" required
      minlength="12" autocomplete="new-password"
      aria-describedby="pw-regeln">
    <p id="pw-regeln">
      Mindestens 12 Zeichen. Einfügen ist erlaubt.
    </p>
  </div>

  <div>
    <label for="pw2">Passwort wiederholen</label>
    <input id="pw2" name="passwort-wiederholung"
      type="password" required autocomplete="new-password"
      aria-describedby="pw2-fehler">
    <p id="pw2-fehler"></p>
  </div>

  <p>
    Wie wir Ihre Daten verarbeiten:
    <a href="/datenschutz">Datenschutzhinweise öffnen</a>
  </p>

  <button type="submit">Konto anlegen</button>
</form>
<script src="registrieren.js"></script>
registrieren.jsVergleich
const formular = document.getElementById('registrierung');
const passwort = document.getElementById('pw');
const wiederholung = document.getElementById('pw2');
const fehler = document.getElementById('pw2-fehler');
const text = 'Die Passwörter stimmen nicht überein.';

function fehlerLeeren() {
  if (passwort.value !== wiederholung.value) return;
  fehler.textContent = '';
  wiederholung.removeAttribute('aria-invalid');
}

passwort.addEventListener('input', fehlerLeeren);
wiederholung.addEventListener('input', fehlerLeeren);

formular.addEventListener('submit', (ereignis) => {
  if (passwort.value === wiederholung.value) return;
  ereignis.preventDefault();
  fehler.textContent = text;
  wiederholung.setAttribute('aria-invalid', 'true');
  wiederholung.focus();
});
BrowserServer

Client-Code erklärt frühe Fehler. Die serverseitige Prüfung bleibt entscheidend.

Prüfprotokoll

Beziehungen und Zustände testen

  1. Beschriftung: Auf jeden Feldnamen klicken. Der Fokus muss in das zugehörige Feld wechseln.
  2. Beschreibung: Das Passwortfeld mit einem Vorleseprogramm ansteuern. Die Regel muss zusammen mit dem Feld verfügbar sein; die genaue Ansage variiert.
  3. Fehler: Zwei verschiedene Passwörter senden. Der Fokus landet in der Wiederholung, die Meldung ist sichtbar und mit dem Feld verbunden.
  4. Korrektur: Werte angleichen. Meldung und aria-invalid verschwinden, bevor erneut gesendet wird.
  5. Ohne Skript: JavaScript deaktivieren. Der Server muss fehlende oder widersprüchliche Werte weiterhin ablehnen und verständlich zurückmelden.

Aus dem Prüfbericht

Vier Stellen, vier Befunde

Kritisch Ungültiger Zustand am Passwortfeld Regel aria-valid-attr-value

aria-invalid="vielleicht" beschreibt keinen Zustand. Erlaubt sind true und false, gesetzt erst nach der Prüfung.

Anleitung: Gültige ARIA-Attributwerte setzen

Zum Mitnehmen

Das Registrierungsformular, korrigiert

Ein label je Feld, gültige Werte, ein benannter Absendeknopf.

Korrektur in 3 Schritten ansehen
  1. E-Mail-Feld benennen und zuordnen

    Ein label mit for gibt dem Feld seinen Namen. autocomplete="email" lässt den Browser die gespeicherte Adresse vorschlagen.

    KorrekturvergleichSchritt 1 · HTML

    Vorher

    <input type="email" name="email" placeholder="E-Mail-Adresse"
      autocomplete="mailadresse">

    Nachher

    <label for="email">E-Mail-Adresse</label>
    <input id="email" type="email" name="email"
      autocomplete="email">

    Markierte Zeilen wurden geändert

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

  2. Den Fehlerzustand gültig setzen

    aria-invalid kennt nur true und false. Die Meldung steht in einem eigenen Element und wird per aria-describedby verbunden.

    KorrekturvergleichSchritt 2 · HTML

    Vorher

    <input id="passwort" type="password" autocomplete="new-password"
      aria-invalid="vielleicht">
    <p id="passwort-fehler">Mindestens zwölf Zeichen.</p>

    Nachher

    <input id="passwort" type="password" autocomplete="new-password"
      aria-invalid="true" aria-describedby="passwort-fehler">
    <p id="passwort-fehler">Mindestens zwölf Zeichen.</p>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Senden Sie das Formular mit einem kurzen Passwort ab. Ein Vorleseprogramm nennt Feld, Fehler und Meldung.

  3. Dem Absendeknopf einen Namen geben

    Der Text im Button nennt die Aktion für alle. Das Pfeilsymbol bleibt Dekoration und wird für Vorleseprogramme ausgeblendet.

    KorrekturvergleichSchritt 3 · HTML

    Vorher

    <button type="submit">
      <svg aria-hidden="true"><use href="#icon-pfeil"></use></svg>
    </button>

    Nachher

    <button type="submit">
      Konto anlegen
      <svg aria-hidden="true"><use href="#icon-pfeil"></use></svg>
    </button>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Fahren Sie mit der Tab-Taste auf den Knopf. Ein Vorleseprogramm sagt „Konto anlegen, Schaltfläche“.

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.