Required correct toepassen in formulieren

Formulieren zijn pas goed toegankelijk wanneer duidelijk is welke velden verplicht zijn. Niet alleen visueel, maar ook programmatisch. Dat betekent dat browsers en assisterende technologie, zoals schermlezers, kunnen herkennen dat een veld verplicht is.

Auteur

Vincent van Brakel

Als onderzoeker digitale toegankelijkheid voert Vincent ruim 8 jaar audits uit voor websites en apps. De focus ligt hierbij niet alleen op de criteria, maar vooral op de drempels voor de doelgroep en hoe we deze samen kunnen oplossen.

Waarom alleen een sterretje niet genoeg is

Veel formulieren gebruiken een sterretje om aan te geven dat een veld verplicht is:

 
<label for="email" >E-mailadres * </label> 
<input type="email" id="email" name="email">


Visueel is dit vaak duidelijk. Maar het sterretje alleen maakt het veld nog niet programmatisch verplicht. Een schermlezer kan de tekst wel voorlezen, maar de browser herkent het veld niet als verplicht veld. Daardoor ontbreekt belangrijke informatie in de code.

Gebruik het standaard required-attribuut

De beste oplossing is het standaard HTML-attribuut required gebruiken:


<label for="email">E-mailadres *</label> 
<input type="email" id="email" name="email" required>


Visueel ziet dit invoerveld er hetzelfde uit, maar voor assisterende software is het duidelijker. Met dit attribuut wordt het veld programmatisch als verplicht gemarkeerd. Browsers herkennen dit attribuut en kunnen gebruikers helpen wanneer het veld leeg wordt verzonden.

Maak duidelijk wat het sterretje betekent

Een sterretje is niet voor iedereen vanzelfsprekend. Zet daarom bij voorkeur boven het formulier wat het sterretje betekent:


<p>Velden met een * zijn verplicht.</p> 
<label for="email">E-mailadres *</label> 
<input type="email" id="email" name="email" required>

Velden met een * zijn verplicht.


Je kunt het woord “verplicht” ook direct in het label opnemen. Dat is vaak nog duidelijker:


<label for="email">E-mailadres verplicht</label> 
<input type="email" id="email" name="email" required>


Gebruik geen niet-standaard attributen als enige oplossing

Sommige formulieren gebruiken attributen zoals:


<input type="email" validation="required|valid_email">

Dit kan door een formulierplugin of script worden gebruikt voor validatie, maar het is geen standaard HTML. Browsers en assisterende technologie herkennen dit niet automatisch als verplicht veld.

Gebruik zulke attributen daarom nooit als enige manier om een verplicht veld aan te geven. Voeg altijd het standaard required-attribuut toe.

Is aria-required nodig?

Vergeet nooit de eerste regel van ARIA: gebruik geen ARIA. Bij standaard HTML-formuliervelden is required meestal voldoende. In sommige complexe maatwerkcomponenten kan aria-required="true" aanvullend nodig zijn, bijvoorbeeld bij aangepaste invoervelden die niet als standaard HTML-input zijn opgebouwd.

Voor normale invoervelden is dit meestal genoeg:


<input type="email" id="email" name="email" required>

Gebruik aria-required="true" niet als vervanging voor required wanneer required gewoon gebruikt kan worden.

Invoervelden en persoonsgegevens

Wanneer browsers het doel van de invoer van een formulier kunnen herkennen, kunnen ze invoervelden automatisch invullen. Dit is gebaseerd op eerder ingevulde formulieren. Zo wordt je naam, adresgegevens en bijvoorbeeld e-mailadres automatisch ingevuld. Super handig!

Maar, de browser moet wel weten om welke informatie gevraagd wordt. Hiervoor bestaan autocomplete attributen. In het volgende voorbeeld is dit attribuut toegevoegd, om het formulier completer te maken.


<label for="email">E-mailadres verplicht</label> 
<input type="email" id="email" name="email" autocomplete="email" required>

Welke WCAG-criteria spelen mee?

Een verplicht veld dat alleen visueel herkenbaar is, kan problemen opleveren onder meerdere WCAG-criteria.

  • Bij WCAG 1.3.1 Info en relaties gaat het om informatie die visueel zichtbaar is, maar niet goed programmatisch beschikbaar is.
  • Bij WCAG 3.3.2 Labels of instructies gaat het om duidelijke instructies bij invoervelden. Gebruikers moeten kunnen begrijpen welke informatie nodig is en welke velden verplicht zijn.
  • Bij WCAG 4.1.2 Naam, rol, waarde kan het misgaan wanneer de eigenschappen van een formulieronderdeel, zoals de verplichte status, niet goed beschikbaar zijn voor assisterende technologie.

Praktische checklist

  • Is visueel duidelijk dat het veld verplicht is?
  • Is het veld programmatisch verplicht met required?
  • Is duidelijk wat een sterretje betekent?
  • Heeft het veld een goed gekoppeld label?
  • Wordt er niet alleen vertrouwd op placeholdertekst of niet-standaard attributen?

Digitaal toegankelijke formulieren maken

Een verplicht formulierveld moet niet alleen zichtbaar verplicht lijken. De verplichting moet ook in de code staan. Gebruik daarom bij standaard formuliervelden altijd het HTML-attribuut required en zorg voor een duidelijk label of duidelijke instructie. Zo begrijpen alle gebruikers wat er nodig is om het formulier goed in te vullen.