TL;DR
- Et inputfelt bør være koblet til både instruktioner og fejlmeddelelser.
aria-describedbyforbinder feltet med tekst viaid.- Det samme felt kan godt pege på flere tekster på én gang.
- Når struktur, krav og styling hænger sammen, bliver formularen lettere at bruge.
Hvis du kun husker én ting: Et felt er først ordentligt forklaret, når hjælpetekst og fejlmeddelelse er koblet til det.
Kobl fejlbeskeden til feltet
Koblingen mellem et input og en fejlbesked kan fx se sådan her:
<div> <label for="password">Password</label> <p>Password must be at least 8 characters</p> <input id="password" aria-describedby="password-error" /> <p id="password-error">Please enter a value</p></div>Pointen er, at fejlteksten ikke bare står “i nærheden”. Den er eksplicit koblet til feltet.
Det giver mere mening for hjælpemidler og gør strukturen mere bevidst.
Det gælder også instruktioner
Det samme mønster kan bruges til instruktionstekst:
<div> <label for="password">Password</label> <p id="password-instruction">Password must be at least 8 characters</p> <input id="password" aria-describedby="password-instruction password-error" /> <p id="password-error">Please enter a value</p></div>Her er den vigtige detalje, at aria-describedby kan pege på mere end én id.
Det betyder, at ét inputfelt kan være forbundet til:
- en instruktion
- en fejlbesked
på samme tid.
Det bliver hurtigt teknisk
Et rigtigt felt kan hurtigt ende med flere attributter:
<input type="password" id="password" name="password" aria-describedby="password-instructions password-error" minlength="8" required />Det kan godt se tungt ud første gang. Men hver del har en funktion:
idognameidentificerer feltetrequiredogminlengthbeskriver kravaria-describedbyforbinder feltet med forklarende tekst
Så selv om koden bliver længere, bliver intentionen også tydeligere.