Geldige label-ID's voor fragmenten
Silktide controleert formuliervelden die via hun ID naar een ander element verwijzen en rapporteert labels waarvan de ID nergens op de pagina bestaat. Een label dat naar niets verwijst, kan niets benoemen.
In benoemt een <label> een formulierveld door het for-attribuut in te stellen op de id van het veld. Deze controle verifieert alleen of de verwezen ID ergens op de pagina bestaat. Een aanvullende controle, Geldige label-ID's, gaat verder en verifieert of het doel een formulierveld is waaraan een label kan worden gekoppeld.
<!-- Probleem: niets op de pagina heeft id="food" -->
<label for="food">Favoriete eten</label>
Waarom dit belangrijk is
Een label met een verbroken verwijzing doet niets: een kan het niet aan een veld koppelen. Daardoor wordt het veld waarvoor het label bedoeld was zonder naam aangekondigd en krijgt het klikken op het label niet langer de focus. Omdat de pagina er onveranderd uitziet, ontstaan deze problemen meestal ongemerkt wanneer ID's worden hernoemd of de opmaak wordt herstructureerd. Alleen geautomatiseerde controles sporen ze op.
Zo los je het op
- Zoek het element dat het label moest beschrijven en stel de waarde van
forvan het label in op de exacteidvan dat element (ID's zijn hoofdlettergevoelig):
<!-- Opgelost: het label verwijst naar een echte ID -->
<label for="food">Favoriete eten</label>
<input type="text" id="food">
- Voeg een
idtoe als het doelelement die mist. - Verwijder het label als het een overblijfsel is dat niets meer beschrijft.
Hoe Silktide dit controleert
- Zoek op elke pagina elk
<label>-element met een niet-leegfor-attribuut. - Zoek overal op de pagina naar een element waarvan de
idovereenkomt. - Rapporteer het label als zo'n element niet bestaat.