Vorlage für ein Registrierungsformular
Vier Felder, die ihren Zweck nennen
Feldnamen, Eingabezwecke, Zustände, Absendeknopf: vier Stellen im Registrierungsformular.
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.
Die verdrahtete Eingabemaske
for="email" ↔ id="email"Der sichtbare Text bleibt auch beim Tippen erhalten.
autocomplete="email"Für ein neues Passwort gilt new-password.
aria-describedby="pw-regeln"Die Anforderung steht schon vor dem Absenden bereit.
aria-invalid="true"Die Meldung nennt das Problem und bleibt am Feld verknüpft.
Fehler nicht vorwegnehmen
Drei Zustände beim Passwortvergleich
- 1Vor dem Absenden
Regeln sind sichtbar. Das Feld trägt noch keinen Fehlerzustand.
- 2Nach einem Fehlversuch
Meldung einsetzen,
aria-invalid="true"setzen und den Fokus zur Wiederholung führen. - 3Nach 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.
<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>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();
});Client-Code erklärt frühe Fehler. Die serverseitige Prüfung bleibt entscheidend.
Prüfprotokoll
Beziehungen und Zustände testen
- Beschriftung: Auf jeden Feldnamen klicken. Der Fokus muss in das zugehörige Feld wechseln.
- Beschreibung: Das Passwortfeld mit einem Vorleseprogramm ansteuern. Die Regel muss zusammen mit dem Feld verfügbar sein; die genaue Ansage variiert.
- Fehler: Zwei verschiedene Passwörter senden. Der Fokus landet in der Wiederholung, die Meldung ist sichtbar und mit dem Feld verbunden.
- Korrektur: Werte angleichen. Meldung und
aria-invalidverschwinden, bevor erneut gesendet wird. - 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 Felder ohne verbundene Beschriftung Regel label
Der Platzhalter im E-Mail-Feld verschwindet beim Tippen. Ein label mit for gibt dem Feld seinen dauerhaften Namen.
Kritisch Eigene Werte im Eingabezweck Regel autocomplete-valid
autocomplete="mailadresse" kennt kein Browser. Für die Registrierung gelten email, username und new-password.
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.
Kritisch Der Absendeknopf zeigt nur ein Symbol Regel button-name
Ein Pfeil ohne Wort nennt die Aktion nicht. „Konto anlegen“ als Buttontext ist der klarste Weg.
Zum Mitnehmen
Das Registrierungsformular, korrigiert
Ein label je Feld, gültige Werte, ein benannter Absendeknopf.
Korrektur in 3 Schritten ansehen
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.
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.
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“.
