submit • Formulardaten senden

Wenn der Benutzer ein Formular absendet, feuert der Browser ein submit-Event. Javascript kann das submit-Event abfangen und die Übermittlung der Daten verhindern. So kann das Script die Formulareingaben vor der Übertragung der Daten prüfen und die Übertragung aussetzen, bis alle erforderlichen Felder korrekt ausgefüllt wurden.

Javascript submit – Absenden des Formulars

submit – beim Absenden von Formulardaten

Auch wenn die input-Elemente mit Attributen wie required und Pseudoklassen wie valid / invalid viele Aufgaben übernehmen: Das clientseitige Prüfen vor dem Absenden von Benutzereingaben trägt zu einem barrierefreien Ausfüllen von Formularen mit weniger Abbrüchen bei.

Das submit-Event ist ausschließlich für das form-Element gedacht und wird in erster Linie bei der Validierung von Formularen eingesetzt. submit feuert in dem Augenblick, in dem der Benutzer das Formular zur Bearbeitung abschickt.

<input type="email" required placeholder="…">
<button type="submit">Absenden</button>

Wenn Javascript nicht aktiviert ist, wird die vorgegebene Aktion des Formulars – die Übertragung der Daten an die Anwendung – ohne Prüfung ausgeführt.

Absenden der Formulareingaben verhindern

Das Script muss das Absenden explizit verhindern: event.preventDefault() das Absenden des Formulars, wenn Eingaben nicht akzeptiert werden.

Schema: Prüfen und Absenden von Formularen
Ablauf beim Senden eines Formulars und Prüfen mit Javascript
const myForm = document.querySelector("#myForm");
myForm.addEventListener("submit", function(event) {
	const emailField = document.querySelector("#email");
	const errorMessage = document.querySelector("#error-message");

	if (!emailField.checkValidity()) {
		event.preventDefault();  // Verhindert das Absenden des Formulars
		errorMessage.textContent = "Bitte geben Sie Ihre Emailadresse ein!";
	}
});

checkValidity() ist eine JavaScript-Methode für Formularelemente und prüft, ob die Eingaben den HTML5-Validierungsregeln entsprechen, im einfachsten Fall ob das Feld ausgefüllt wurde (weil required gesetzt ist). Bei Eingaben in Formularfeldern mit Bedingungen wie min, max oder pattern liefert checkValidity() die Fehlermeldung gleich mit. Das erspart z.B. die Prüfung, ob die Eingabe innerhalb eines bestimmten Wertebereichs liegt.

Geprüft, für richtig gefunden und dann … ?

Wenn die Eingaben geprüft und für richtig gefunden wurden, können sie mit fetch() oder XMLHttpRequest im Hintergrund versendet werden, ohne daß ein Neuladen der Seite erforderlich wird.

<form id="ajaxForm" class="field-group split split-2-1">
	<input type="text" name="username" required minlength="3" placeholder="…">
	<button class="btn" type="submit">Absenden</button>
</form>
<p id="response"></p>

document.querySelector("#ajaxForm").addEventListener("submit", function (e) {
    e.preventDefault(); // Standard-Submit verhindern

    let formData = new FormData(this);

    fetch("submit.php", {
        method: "POST",
        body: formData
    })
    .then(response => response.json())  // Antwort als JSON
    .then(data => {
        if (data.status === "success") {
            document.querySelector("#response").textContent = data.message;
        } else {
            alert("Fehler: " + data.message); // Fehlernachricht anzeigen
        }
    })
    .catch(error => console.error("Fehler:", error));
});

Natürlich kann der Check, ob alle Daten korrekt eingegeben wurden, nicht die Prüfung bei der verarbeitenden Anwendung ersetzen.

Suchen auf mediaevent.de