← Niveau 2 – Tovenaar

Les 7 van 8 ⏱ 30 minuten

Een formulier dat fouten vangt

Een bezoeker laat je een bericht achter en het formulier wijst vriendelijk aan als er iets ontbreekt.

Ik laat je zien: een formulier in HTML

Een formulier is een set velden waar de bezoeker in typt:

<form id="message-form">
  <label for="name">Your name</label>
  <input id="name" type="text" placeholder="Jake">

  <label for="message">Message</label>
  <textarea id="message" placeholder="Hi! You have an awesome website."></textarea>

  <button type="submit">Send message</button>
</form>

<p id="confirmation"></p>

En wat CSS om het mooi te maken:

form {
  display: flex;
  flex-direction: column;   /* fields stacked vertically */
  gap: 8px;
  max-width: 400px;
}

input, textarea {
  font: inherit;
  padding: 10px;
  border: 1px solid #d6d3d1;
  border-radius: 8px;
}

.error {
  border-color: #dc2626 !important;
  background-color: #fee2e2;
}

flex-direction: column draait flexbox van horizontaal naar verticaal: kinderen staan onder elkaar.

Ik laat je zien: controleren in JavaScript

const form = document.getElementById("message-form");
const name = document.getElementById("name");
const message = document.getElementById("message");
const confirmation = document.getElementById("confirmation");

form.addEventListener("submit", (event) => {
  event.preventDefault();   // stop the normal submit (the page would reload)

  // Clear old error marks
  name.classList.remove("error");
  message.classList.remove("error");

  // Check that fields are filled in
  if (name.value.trim() === "") {
    name.classList.add("error");
    confirmation.textContent = "You forgot your name. 🙂";
    return;
  }

  if (message.value.trim() === "") {
    message.classList.add("error");
    confirmation.textContent = "So what do you want to tell me? Write something.";
    return;
  }

  // Everything's fine
  confirmation.textContent = "Thanks for the message, " + name.value + "! 💌";
  form.reset();   // empty the fields
});

Nieuw:

💡

Waar gaat het bericht naartoe? Nog nergens – we hebben geen server om het te ontvangen. We controleren alleen het bericht en bedanken. Maar onthoud deze plek: in Level 3 bouwen we een echte server met een gastenboek en koppelen we dit formulier eraan. Dan worden berichten echt opgeslagen!

Nu jij 💪

Voeg een formulier toe aan je website dat bij je project past, met invoercontrole:

⚠️

Een veiligheidsgewoonte van de professionals: vertrouw nooit wat een gebruiker typt. Controleer het altijd – een leeg veld, een onzinleeftijd, tekst die te lang is. Vandaag doe je het uit beleefdheid; in echte applicaties is het de eerste verdedigingslinie tegen aanvallers.

Controleer jezelf: Een leeg formulier versturen maakt het veld rood en toont een bericht. Een ingevuld formulier bedankt bij naam en leegt zichzelf. Beleefd, vriendelijk, professioneel.

Wat neem je mee uit deze les