Accessible Login Form

Die Anmeldung, die ihre Felder benennt

Feld, Autovervollständigung, Schaltfläche, Zustand: vier Stellen im Anmeldeformular.

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

Anatomie der Anmeldung

Vier Verbindungen führen sicher ins Konto

Sehen Sie, welche sichtbare Information mit welchem HTML-Attribut verbunden ist.

Verbindungen im zugänglichen Anmeldeformular Linien verbinden die sichtbaren Feldnamen, Autofill-Angaben, Fehlermeldungen und den Passwortschalter mit den passenden Stellen im dargestellten Formular.

Name

Sichtbares Label

for="email" trifft id="email". Das vergrößert die Klickfläche und liefert den Namen für Sprachsteuerung und Vorleseprogramme.

Zweck

Passende Autofill-Tokens

username und current-password sagen Browsern und Passwortmanagern, welche gespeicherten Werte hierhin gehören.

Fehler

Text, Zustand, Bezug

Der Text nennt das Problem. aria-invalid="true" markiert das Feld; aria-describedby verbindet es mit Hinweis und Fehlermeldung.

Zugang

Ein Schalter mit Zustand

Der Name „Passwort anzeigen“ bleibt stabil. aria-pressed meldet den Zustand. Einfügen bleibt erlaubt, damit Passwortmanager funktionieren.

Konzeptdarstellung eines fehlgeschlagenen Anmeldeversuchs. Die Linien zeigen die vier Beziehungen, die im Code erhalten bleiben müssen.

Kopierbares Grundgerüst

Das HTML im Fehlerzustand

Rendern Sie Fehlertext und Fehlerattribute erst nach einem fehlgeschlagenen Versuch. Vorher entfallen der Fehlerkasten und beide aria-invalid-Attribute.

<form action="/anmelden" method="post">
  <div id="anmeldefehler" class="fehler" tabindex="-1">
    <strong>Die Anmeldung war nicht möglich.</strong>
    <p>Prüfen Sie E-Mail-Adresse und Passwort.</p>
  </div>

  <label for="email">E-Mail-Adresse</label>
  <input id="email" name="email" type="email" required
    autocomplete="username" autocapitalize="none" spellcheck="false"
    aria-invalid="true" aria-describedby="anmeldefehler">

  <label for="pw">Passwort</label>
  <input id="pw" name="pw" type="password" required
    autocomplete="current-password" aria-invalid="true"
    aria-describedby="pw-hinweis anmeldefehler">
  <p id="pw-hinweis">Einfügen ist erlaubt.</p>

  <button type="button" id="pw-schalter"
    aria-controls="pw" aria-pressed="false">
    Passwort anzeigen
  </button>
  <button type="submit">Anmelden</button>
</form>

Passwort anzeigen

Der Zustand ändert sich, der Name bleibt

const feld = document.getElementById('pw');
const schalter = document.getElementById('pw-schalter');

schalter.addEventListener('click', () => {
  const verdeckt = feld.type === 'password';
  feld.type = verdeckt ? 'text' : 'password';
  schalter.setAttribute('aria-pressed', String(verdeckt));
});

type="button" verhindert ungewolltes Absenden. Der Fokus bleibt auf dem Schalter, dessen neuer Zustand direkt angesagt werden kann.

Aus dem Prüfbericht

Vier Stellen, vier Befunde

Zum Mitnehmen

Das Anmeldeformular, korrigiert

Zwei Felder, eine Schaltfläche. Alles im HTML.

Korrektur in 3 Schritten ansehen
  1. Felder benennen und Autovervollständigung setzen

    label liefert den Namen, autocomplete den Zweck. Passwortmanager füllen dann beide Felder.

    KorrekturvergleichSchritt 1 · HTML

    Vorher

    <input type="email" name="email" placeholder="E-Mail"
      autocomplete="email-address">
    <input type="password" name="pw" placeholder="Passwort">

    Nachher

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

    Markierte Zeilen wurden geändert

    So prüfen Sie es Tab ins erste Feld. Der Browser bietet gespeicherte Zugangsdaten an.

  2. Der Passwort-Anzeige einen Namen geben

    aria-pressed zeigt, ob das Passwort gerade sichtbar ist. Der Name bleibt gleich.

    KorrekturvergleichSchritt 2 · HTML

    Vorher

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

    Nachher

    <button type="button" class="eye" aria-label="Passwort anzeigen" aria-pressed="false">
      <svg aria-hidden="true"><use href="#icon-eye"></use></svg>
    </button>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Tab auf das Auge. Ein Vorleseprogramm sagt „Passwort anzeigen, Umschaltfläche, nicht gedrückt“.

  3. Den Fehlerzustand gültig melden

    aria-invalid="true" markiert das Feld, aria-describedby bindet die Meldung an.

    KorrekturvergleichSchritt 3 · HTML

    Vorher

    <input id="pw" type="password" name="pw" aria-invalid="error">
    <p class="error">Passwort falsch</p>

    Nachher

    <input id="pw" type="password" name="pw" aria-invalid="true"
      aria-describedby="pw-fehler">
    <p id="pw-fehler" class="error">Das Passwort ist falsch.</p>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Tab ins Feld. Ein Vorleseprogramm sagt „Passwort, ungültige Eingabe, das Passwort ist falsch“.

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.