Gyldige ID-er for etiketter
Silktide kontrollerer skjem etiketter som navngir feltet sitt ved hjelp av en ID, og verifiserer at ID-en finnes på siden og tilhører et element som faktisk kan ha en etikett. En etikett som peker på ingenting, eller på feil type element, gjør at et felt blir stående uten navn uten at det er synlig.
I kobles en <label> til skjemafeltet ved å sette etikettens for-attributt til feltets id. Koblingen brytes når ID-en er skrevet feil, når feltets ID endres, eller når målet ikke er et skjemafelt i det hele tatt.
<!-- Problem: Det finnes ikke noe element med id="fullname" -->
<label for="fullname">Fullt navn</label>
<input type="text" id="full-name">
Hvorfor dette er viktig
Etiketten er det en bruker for å kunngjøre et felt. Når for-referansen er brutt, er etiketten og feltet to urelaterte elementer: Besøkende hører et navnløst «rediger tekst»-felt og må gjette hva som skal skrives inn. Ingenting endres visuelt – etiketten ligger fortsatt ved siden av feltet – så slike brudd blir ikke oppdaget før noen som er avhengig av koblingen, prøver å bruke skjemaet.
Slik løser du det
- Finn feltet etiketten var ment for, og sørg for at etikettens
for-verdi samsvarer nøyaktig med feltetsid(ID-er skiller mellom store og små bokstaver):
<!-- Rettet: Referansen samsvarer med feltets id -->
<label for="full-name">Fullt navn</label>
<input type="text" id="full-name">
- Hvis etiketten peker på noe som ikke kan ha en etikett – for eksempel en
<div>som fungerer som en egendefinert kontroll – bruker du i stedet: Legg tilaria-labelledbypå elementet, slik at det peker tilbake på teksten som navngir det. - Hvis etiketten er en rest uten noe felt, fjerner du den.
Slik tester Silktide dette
- Finn hvert
<label>-element med etfor-attributt på hver side. - Slå opp elementet med en
idsom samsvarer medfor-verdien. - Rapporter etiketten hvis et slikt element ikke finnes.
- Hvis det finnes, rapporter etiketten hvis målet ikke er et etiketterbart skjemaelement – en knapp, et inndatafelt (bortsett fra skjulte felt), en rullegardinliste, et tekstområde, en måler, et utdatafelt eller en fremdriftsindikator.
Feilsøking
Feltet legges til av skript
Silktide undersøker hver side slik den gjengis. Hvis målfeltet bare finnes i enkelte tilstander på siden – for eksempel etter at et panel er åpnet – kan etikettens mål mangle når kontrollen utføres. Vurder å gjengi etiketten og feltet sammen.