Siirry sisältöön
SilktideOhje

Vältä label-elementtejä ohjausobjekteissa, joita ei voi nimetä label-elementillä

Silktide tarkistaa lomakkeiden label-elementit, jotka viittaavat toiseen elementtiin tunnuksen perusteella, ja ilmoittaa label-elementeistä, jotka kohdistuvat elementteihin, joilla ei pitäisi olla sellaista – painikkeisiin, painikkeen kaltaisiin syötteisiin ja elementteihin, joille ei voi liittää label-elementtiä lainkaan. Näiden elementtien nimi määräytyy niiden omasta tekstistä tai arvosta, ja erillinen label-elementti aiheuttaa ristiriitaisia nimiä.

<label> nimeää lomakekentän for-attribuuttinsa avulla. Joillakin ohjausobjekteilla on kuitenkin jo oma nimensä: painikkeen nimi on sen teksti ja lähetystyypin syötteen nimi on sen value. Muita elementtejä, kuten tavallista <div>-elementtiä tai piilotettua syötettä, ei voi nimetä tällä tavalla lainkaan.

<!-- Ongelma: painikkeessa lukee jo "Save"; label-elementti kilpailee sen kanssa -->
<label for="save">Save</label>
<button id="save">Save</button>

Miksi tämä on tärkeää

Kun ohjausobjektilla on kaksi nimilähdettä – sen oma teksti ja siihen viittaava label-elementti – eri selaimet ja ratkaisevat ristiriidan eri tavoin. Ohjausobjekti voidaan ilmoittaa kahdesti, se voidaan ilmoittaa väärällä tekstillä tai se voi toimia odottamattomasti, kun label-elementtiä napsautetaan. Tarpeettoman label-elementin poistaminen varmistaa, että jokainen kävijä kuulee täsmälleen sen, mitä ohjausobjektissa lukee.

Näin korjaat sen

  1. Poista painikkeista ja painikkeen kaltaisista syötteistä <label> ja käytä ohjausobjektin omaa tekstiä tai value-arvoa:
<!-- Korjattu: painike nimeää itsensä -->
<button id="save">Save</button>
<input type="submit" value="Submit">
  1. Jos label-elementti viittaa piilotettuun syötteeseen, poista label-elementti – piilotettuja kenttiä ei koskaan näytetä tai ilmoiteta, joten ne eivät tarvitse nimeä.
  2. Jos nimesit muuta kuin lomake-elementtiä, esimerkiksi mukautettuna ohjausobjektina toimivaa <div>-elementtiä, käytä sen sijaan : anna elementille aria-labelledby, joka viittaa sen nimeävään tekstiin.

Näin Silktide testaa tämän

  1. Etsi jokaiselta sivulta kaikki <label>-elementit, joilla on for-attribuutti.
  2. Hae elementti, jonka id vastaa sitä. Label-elementit, jotka viittaavat tunnuksiin, joita ei ole olemassa, ohitetaan tässä – niistä ilmoitetaan sen sijaan tarkistuksessa Kelvolliset label-tunnukset.
  3. Ilmoita label-elementistä, kun sen kohde on jokin seuraavista:
    • <button>-elementti,
    • <input>, jonka tyyppi on button, submit, reset, image tai hidden,
    • mikä tahansa elementti, jolle ei voi liittää label-elementtiä, kuten <div> tai otsikko.
  4. Tavallisiin kenttiin – tekstisyötteisiin, <select>- ja <textarea>-elementteihin sekä vastaaviin – viittaavat label-elementit hyväksytään.

Lisätietoja

Viimeksi päivitetty

Oliko tästä sivusta apua?