Giltiga etikett-ID:n
Silktide kontrollerar formuläretiketter som anger sitt fält med hjälp av ett ID och verifierar att ID:t finns på sidan och tillhör ett element som faktiskt kan ha en etikett. En etikett som pekar på ingenting, eller på fel typ av element, lämnar i tysthet ett fält utan namn.
I kopplas en <label> till sitt formulärfält genom att ange etikettens for-attribut till fältets id. Kopplingen bryts när ID:t är felstavat, när fältets ID ändras eller när målet inte alls är ett formulärfält.
<!-- Problem: det finns inget element med id="fullname" -->
<label for="fullname">Fullständigt namn</label>
<input type="text" id="full-name">
Varför detta är viktigt
Etiketten är det som en använder för att meddela vilket fält det är. När for-referensen är bruten är etiketten och fältet två orelaterade element: besökaren hör ett namnlöst ”redigera text” och måste gissa vad som ska anges där. Ingenting förändras visuellt – etiketten står fortfarande bredvid sitt fält – så dessa avbrott förblir oupptäckta tills någon som är beroende av kopplingen försöker använda formuläret.
Så åtgärdar du det
- Hitta fältet som etiketten var avsedd för och se till att etikettens
for-värde exakt matchar fältetsid(ID:n är skiftlägeskänsliga):
<!-- Åtgärdat: referensen matchar fältets id -->
<label for="full-name">Fullständigt namn</label>
<input type="text" id="full-name">
- Om etiketten pekar på något som inte kan ha en etikett – till exempel en
<div>som fungerar som ett anpassat reglage – använder du i stället: lägg tillaria-labelledbyi elementet så att det pekar tillbaka på texten som namnger det. - Om etiketten är kvar utan något fält tar du bort den.
Så testar Silktide detta
- Hitta varje
<label>-element med ettfor-attribut på varje sida. - Slå upp elementet vars
idmatcharfor-värdet. - Rapportera etiketten om inget sådant element finns.
- Om det finns, rapportera etiketten om målet inte är ett etiketterbart formulärelement – en knapp, ett inmatningsfält (förutom dolda fält), en listruta, ett textområde, en mätare, ett utdataelement eller en förloppsindikator.
Felsökning
Fältet läggs till av skript
Silktide granskar varje sida så som den renderas. Om målfältet bara finns i vissa tillstånd på sidan – till exempel efter att en panel har öppnats – kan etikettens mål saknas när kontrollen utförs. Överväg att rendera etiketten och dess fält tillsammans.