Formulieren en invoervelden
Inhoud
Standaard is method="GET" en action is de huidige pagina als je het niet instelt.
Let op: het daadwerkelijk verwerken van formulierdata op de server valt buiten deze cursus.
<form action="https://www.example.com/submit" method="POST">
<!-- invoervelden hier -->
</form>Labels koppelen tekst aan invoervelden en zijn essentieel voor toegankelijkheid en gebruiksgemak:
Expliciet (met
forenid):
<label for="email">E-mailadres</label>
<input id="email" name="email" type="email">Impliciet (wrappen):
Best practices:
Gebruik altijd een (zichtbaar of toegankelijk verborgen) label;
placeholderis geen vervanging.Zorg dat
id-waarden uniek zijn.Voor het structureren en beschrijven van een groep gerelateerde velden (zoals radio's of checkboxen) zie de sectie "Groeperen van velden" verderop.
Visueel verborgen labels (toegankelijk verbergen)
Soms wil je het label niet zichtbaar tonen maar het wel beschikbaar houden voor schermlezers. Gebruik dan een toegankelijke visueel-verbergende CSS-klasse zoals .visually-hidden (onderaan deze pagina staat een voorbeeld-implementatie).
Dit maakt het label onzichtbaar op het scherm maar nog wel leesbaar voor schermlezers en toetsenbordgebruikers.
Belangrijk: verberg labels niet met display: none of visibility: hidden als je wil dat schermlezers de tekst nog voorlezen — die regels verwijderen het element ook uit de toegankelijkheidsboom.
Voorbeeld van een toegankelijke utility-class (.visually-hidden):
Gebruik bovenstaande class wanneer je het label visueel wilt verbergen maar wél toegankelijk wilt houden.
Als je een element volledig en permanent wilt verbergen (ook voor schermlezers), kun je een utility gebruiken met display: none. Dit verwijdert het element uit de layout én uit de toegankelijkheidsboom:
Gebruik .hidden alleen wanneer je wilt dat het element voor iedereen verborgen is (bijv. dynamische content die pas later zichtbaar wordt en niet relevant is voor schermlezers op dat moment). Voor labels en content die nog toegankelijk moeten zijn, gebruik de .visually-hidden variant.
Plaats deze CSS in je algemene stylesheet en gebruik de juiste utility afhankelijk van of je het element alleen visueel, of volledig wilt verbergen.
Veelgebruikte invoerelementen
Hier korte voorbeelden en belangrijke opmerkingen per type. Voor algemene referentie, zie de MDN-artikelen onder elke kop.
<input> is het algemene element voor vele type-waarden. Enkele veelgebruikte types:
Tekst
Wachtwoord
E-mail
URL
Datum
Bestand upload (belangrijk: POST + enctype)
Gebruik multiple op <input type="file"> om meerdere bestanden te selecteren.
Textareas zijn voor meerregelige tekstinvoer:
Keuzelijst (dropdown):
Gebruik radios wanneer de gebruiker één optie uit een groep moet kiezen:
Checkboxes laten meerdere selecties toe:
Knoppen hebben verschillende rollen (submit, reset, button):
Gebruik <fieldset> en <legend> om gerelateerde velden samen te brengen. Dit helpt gebruikers en schermlezers de context te begrijpen.
Toegankelijkheid en best practices
Altijd labels gebruiken (zichtbaar of met een toegankelijke utility-class; zie "Visueel verborgen labels" bij Labels).
Plaats foutmeldingen en instructies visueel nabij het veld en koppel ze met
aria-describedbywanneer nodig.Zorg voor voldoende contrast en duidelijke focus-styles voor toetsenbordgebruik.
Gebruik
inputmode,autocompleteentypewaar mogelijk om mobiele invoer te verbeteren.
Valideren
HTML biedt basisvalidatie via attributen:
required— verplicht veldmin/max— voor numerieke en datumwaardenminlength/maxlength— voor tekstlengtepattern— regex voor specifieke validatie
Belangrijk: vertrouw niet alleen op client-side validatie — controleer altijd ook server-side.
Kort voorbeeldformulier
Meer lezen
MDN HTML forms: https://developer.mozilla.org/en-US/docs/Learn/Forms
Het effectief verzenden/afhandelen van formulierdata (server-side) valt buiten deze cursus.
Last updated