Formulare sind der wichtigste Weg, Eingaben von Menschen zu bekommen. JavaScript liest die Werte, prüft sie und reagiert darauf.
Werte auslesen
Ergebnis
| Feld | Wert lesen |
|---|---|
| Text, Zahl, Datum | feld.value (immer Text; feld.valueAsNumber für Zahlen) |
| Checkbox | feld.checked |
| Radio-Gruppe | form.elements.gruppe.value |
| Select | feld.value |
| Mehrfachauswahl | [...select.selectedOptions] |
| Datei | feld.files[0] |
Live-Eingabe
Ergebnis
Validierung
HTML bringt Prüfungen mit: required, minlength, maxlength, min, max, pattern, type="email". JavaScript greift über die Constraint Validation API darauf zu:
Ergebnis
checkValidity()prüft das Formular,reportValidity()zeigt zusätzlich Meldungeninput.validity.valueMissing,typeMismatch,tooShort,patternMismatchsagen, was falsch istinput.setCustomValidity("Text")setzt eine eigene Meldung (leerer Text = gültig)
Zugänglich bleiben
- Jedes Feld braucht ein
<label>(Klick auf den Text fokussiert das Feld, Screenreader lesen ihn vor) - Fehlermeldungen als Text anzeigen, nicht nur über Farbe, und mit
role="alert"oderaria-liveankündigen - Passenden
typewählen (email,tel,number,date): Handys zeigen dann die richtige Tastatur
Dateien
Ergebnis
Formular per fetch absenden
f.addEventListener("submit", async (e) => {
e.preventDefault();
const antwort = await fetch("/api/kontakt", {
method: "POST",
body: new FormData(f), // bei Dateien: multipart/form-data
});
status.textContent = antwort.ok ? "Gesendet" : "Fehler " + antwort.status;
});Merke
FormDataundObject.fromEntriesholen alle Werte auf einmalvalueist immer Text, bei Zahlen mitNumber()umwandelnrequired,patternundcheckValidity()prüfen im Browser- Der Server muss trotzdem prüfen
- Labels, passende Typen und Textmeldungen halten Formulare zugänglich
Aufgabe
Baue ein Registrierungsformular mit Name, E-Mail und Passwort. Zeige bei ungültigen Feldern eine verständliche Meldung unter dem Feld.