Web Development

Ein Lehrbuch für das Informatik oder Medien-Informatik Studium.

Im Kapitel über Formulare haben Sie gelernt, wie Sie mit Javascript die einzelnen Eingabfelder eines Webformulars prüfen können bevor das Formular abgesendet wird.

Komplexe Überprüfung

Mit JavaScript kann man noch komplexere Überprüfungen programmieren. Dazu braucht man das submit event, das vom Formular gefeuert wird, bevor die Daten gesendet werden.

Zum Beispiel soll in folgendem Formular sicher gestellt werden, dass mindestens 1 Stück bestellt wird:

<form>
  <label for="schokolade">Tafeln Schokolade:</label>
  <input type="number" name="schokolade" id="schokolade" value="0">
  <label for="schweinsbraten">Portionen Schweinsbraten:</label>
  <input type="number" name="schweinsbraten" id="schweinsbraten" value="0">
  <label for="kaffee">Tassen Kaffee:</label>
  <input type="number" name="kaffee" id="kaffee" value="0">
  <button type="submit">Bestellen</button>
  </form>

Abfangen des submit Events

Die Überprüfung erfolgt im submit - Event:

document.querySelector("form").addEventListener("submit", function(event) {
  // ...
  if (!ok) {
    event.preventDefault(); // Verhindert das Absenden des Formulars, wenn `ok` false ist
  }
});

Eingabefelder Prüfen:

Der Wert eines Eingabefeldes kann mit .value ausgelesen werden:

document.querySelector('input[name="schokolade"]').value;

Achtung: dieser Wert ist immer ein String!

Fertiges Programm:

Das fertige Programm zeigt die Fehlermeldungen auch an:

document.querySelector("form").addEventListener("submit", function(event) {
  var ok = true;

  // Entfernen alle Fehlermeldungen
  document.getElementById("display_errors").innerHTML = "";

  console.log(document.querySelector("input[name=schokolade]").value);
  // Berechnen der Gesamtsumme
  var gesamtZahl = parseInt(document.querySelector("input[name=schokolade]").value)
      + parseInt(document.querySelector("input[name=schweinsbraten]").value)
      + parseInt(document.querySelector("input[name=kaffee]").value);

  // Überprüfen der Gesamtsumme
  if(gesamtZahl === 0) {
    document.getElementById("display_errors").innerHTML += "<p>Mindest-Bestellmenge 1!</p>";
    ok = false;
  }

  // Verhindern des Formularabsendens, wenn ok false ist
  if (!ok) {
    event.preventDefault();
  }
  return ok;
});