form
Een landmark voor een formulier — een verzameling invoerbesturingselementen die gegevens indienen. Een <form>-element wordt als form-landmark weergegeven ALLEEN wanneer het een toegankelijke naam heeft. Zonder naam is het slechts een formulier, geen landmark.
Wanneer gebruiken
Rondom een substantieel formulier — registratie, afrekenen, contact, profielbewerking — dat navigatie als landmark rechtvaardigt. Net als region wordt het <form>-element pas tot form-landmark verheven wanneer het een toegankelijke naam heeft (aria-label of aria-labelledby).
De toegankelijke naam van een formulier moet het doel beschrijven: “Contactformulier”, “Aanmelden”, “Profiel bewerken”. Vermijd generiek “Formulier” — overbodig naast de rol-aankondiging.
Als het formulier een zoekformulier is, gebruik dan <search> (of role="search") — het zoekladmark is specifieker.
Een enkelvoudig nieuwsbrief-aanmeldveld of een zoekveld rechtvaardigt het form-landmark niet. Reserveer het voor formulieren met drie of meer betekenisvolle invoervelden en een duidelijk doel.
Wanneer labelen
Altijd — zonder naam wordt <form> geen landmark. Bij meerdere formulieren op een pagina (een reactieformulier EN een nieuwsbrief-aanmelding) MOET elk een unieke naam hebben.
aria-labelledby die wijst naar een zichtbare kop heeft de voorkeur boven aria-label, omdat het de zichtbare titel koppelt aan de landmark-aankondiging.
Veelvoorkomende fouten
<form>zonderaria-label/aria-labelledby. Geen landmark. Gebruikers kunnen er niet naartoe springen via landmarknavigatie.aria-label="Formulier"— overbodig.<form role="search">gebruiken ENaria-label="Zoeken". Het zoekladmark dekt het al; de formrolrol zou conflicteren.- Login- en aanmeldformulieren beide gelabeld als “Aanmelden” — niet te onderscheiden in het landmarkmenu.
- Een enkel invoerveld in
<form>omhullen en het als form-landmark labelen. Overmatig toegepast; het landmark voegt geen waarde toe.
Voorbeeld
<form aria-labelledby="contactHeading">
<h2 id="contactHeading">Neem contact op</h2>
<label>Naam <input type="text" name="name" required></label>
<label>E-mail <input type="email" name="email" required></label>
<label>Bericht <textarea name="message" required></textarea></label>
<button type="submit">Verzenden</button>
</form>