Formulieren die werken in HTML
Formulieren zijn onmisbaar op het web. Denk aan contactformulieren, loginpagina’s, zoekvelden of bestelformulieren. Waar je ook kijkt, overal vind je HTML-formulieren terug. Toch gaat er in de praktijk veel mis: verkeerde velden, slechte toegankelijkheid of ontbrekende validatie. In dit artikel leer je stap voor stap hoe je een formulier maakt dat niet alleen werkt, maar ook gebruiksvriendelijk, veilig en toegankelijk is.
Wat is een HTML-formulier?
Een formulier in HTML is een verzameling velden waarin de gebruiker gegevens kan invullen. Die gegevens worden vervolgens naar een server gestuurd of door JavaScript verwerkt. Een formulier begint altijd met een <form>-tag en eindigt daarmee.
Voorbeeld:
De belangrijkste onderdelen:
- actionbepaalt waar de gegevens naartoe gestuurd worden
- methodbepaalt hoe de gegevens verstuurd worden (- getof- post)
- Formuliervelden zoals tekstvakken, selecties, knoppen 
- Labels die de velden beschrijven 
De verschillende input types
Het <input>-element is veelzijdig en heeft veel varianten. Een paar belangrijke types:
- text– een gewoon tekstveld
- email– een veld dat controleert op e-mailadres
- password– verbergt ingevoerde tekens
- number– accepteert alleen cijfers
- date– datumselectie
- checkbox– een selectievakje
- radio– een keuzerondje voor één optie
- file– uploaden van bestanden
- submit– knop om het formulier te versturen
Voorbeeld met meerdere velden:
Labels: onmisbaar voor gebruiksvriendelijkheid
Een formulier zonder duidelijke labels is verwarrend. Elk veld hoort gekoppeld te zijn aan een <label>. Dit doe je met het for-attribuut dat overeenkomt met de id van het invoerveld.
Dit lijkt misschien klein, maar is enorm belangrijk. Niet alleen begrijpen gebruikers direct wat ze moeten invullen, ook schermlezers weten zo welke tekst bij welk veld hoort.
Validatie van gegevens
Niemand wil een formulier krijgen met half ingevulde of verkeerde gegevens. HTML5 heeft ingebouwde validatie die je met simpele attributen kunt gebruiken:
- required– verplicht veld
- pattern– regex-patroon voor specifieke invoer
- min,- max– minimale of maximale waarde
- maxlength– maximale lengte van tekst
Voorbeeld:
Dit accepteert alleen een Nederlandse postcode zoals 1234AB.
Structuur met fieldset en legend
Bij langere formulieren kun je velden groeperen met <fieldset> en er een titel aan geven met <legend>.
Dit maakt het formulier overzichtelijker en helpt ook bij toegankelijkheid.
Toegankelijkheid (a11y)
Een goed formulier moet bruikbaar zijn voor iedereen, ook voor mensen die een schermlezer gebruiken of alleen met een toetsenbord navigeren.
Tips:
- Gebruik altijd labels. 
- Zorg dat de volgorde van velden logisch is. 
- Voeg - aria-labelstoe als een veld extra uitleg nodig heeft.
- Maak foutmeldingen zichtbaar én hoorbaar. 
Voorbeeld foutmelding:
Beveiliging: vergeet dit niet
Formulieren zijn een veelgebruikte ingang voor misbruik. Let daarom altijd op:
- Gebruik - httpszodat gegevens versleuteld worden verstuurd.
- Valideer niet alleen in HTML maar ook op de server. 
- Bescherm tegen spam met reCAPTCHA of een eenvoudige honeypot. 
- Beperk bestandstypen en groottes bij uploads. 
Styling met CSS
Een kaal formulier oogt onvriendelijk. Met CSS kun je het aantrekkelijker maken:
Zo maak je het formulier overzichtelijk en gebruiksvriendelijk.
Praktisch voorbeeld: contactformulier
Een compleet contactformulier kan er zo uitzien:
Veelgemaakte fouten bij formulieren
- Geen labels gebruiken of alleen placeholders tonen. 
- Te veel verplichte velden waardoor gebruikers afhaken. 
- Geen duidelijke foutmeldingen tonen. 
- Validatie alleen aan de voorkant doen en niet op de server. 
- Formulieren zonder beveiliging waardoor spam of hacks ontstaan. 
Waarom goede formulieren het verschil maken
Een formulier is vaak het belangrijkste onderdeel van een website. Het is de plek waar bezoekers zich aanmelden, contact opnemen of een aankoop doen. Een slecht formulier kan bezoekers frustreren en conversies kosten. Een goed ontworpen formulier daarentegen wekt vertrouwen en vergroot de kans dat mensen hem volledig invullen.

