Akadálymentes súgószöveg űrlapmezőkhöz

A cikk témái

Az űrlapmező címkéje (a label jelölőelem tartalma) nem elegendő arra, hogy olyan instrukciót, súgószöveget helyezzünk el benne, amely támogatja a felhasználói adatbevitel pontosságát. Jellemzően ilyen instrukció lehet az űrlapmezőbe beírható adat részletesebb magyarázata, formátuma vagy hossza. Sajnos a HTML natív módon nem biztosít olyan jelölőelemet, amely kifejezetten az ilyen súgószövegek megjelölésére szolgál. Ez pedig akadálymentességi problémákhoz vezethet.

Bevett gyakorlat, hogy az űrlapmező súgószövegét az űrlapmező mögé vagy alá helyezik el a fejlesztők, általában p, div vagy span jelölőelemmel megjelölve.

Belépési név címkével és minimálisan 8 karakter legyen súgószöveggel rendelkező űrlapmező képernyőfotója

Ennek egyik lehetséges HTML kódolása az alábbi:

<label for="belepesiNev">Belépési név:</label>
<input type="text" id="belepesiNev" name="belepesiNev" />
<span>Minimálisan 8 karakter legyen.</span>

Arra most nem térnék ki, hogy használhatósági szempontból is viták zajlanak arról, hogy vizuálisan a súgószöveg az űrlapmező mellett, vagy az űrlapmező alatt van-e jobb helyen. Az viszont biztos, hogy akadálymentességi szempontból nézve a képernyőolvasó programot alkalmazó vak felhasználók számára egyik megoldás sem szerencsés.

Miért? Mert az előző mintakódot a képernyőolvasó így olvassa fel: Belépési név. Kettőspont. Szerkesztőmező. Ennek az az oka, hogy az űrlapmezőbe lépve a képernyőolvasó átkapcsol úgynevezett űrlap üzemmódba. Ebben az üzemmódban csak az adott űrlapmező értékét, űrlapcímkéjét, illetve esetleges helykitöltő (angolul placeholder) szövegét olvassa fel a program. Az űrlapmező mögötti szöveget nem. Vagyis a súgószövegben található fontos instrukció ilyenkor nem jut el a felhasználóhoz.

Az aria-describedby attribútum

Szerencsére erre a problémára is megoldást kínál a WAI-ARIA szabvány. Az űrlapmező és az őt leíró súgószöveg logikai kapcsolatát az űrlapmezőnél megadható aria-describedby attribútum segítségével tudjuk megteremteni. Ennek az attribútumnak az értéke – a label jelölőelem for attribútumához hasonlóan – a súgószöveg id attribútumának értéke lehet. Vagyis előfeltétel, hogy a súgószöveghez is egyedi id attribútumot rendeljünk. Például így:

<label for="belepesiNev">Belépési név:</label>
<input type="text" id="belepesiNev" name="belepesiNev" aria-describedby="belepesiNevSugo" />
<span id="belepesiNevSugo">Minimálisan 8 karakter legyen.</span>

Ezt a WAI-ARIA szabványt támogató képernyőolvasó programok már úgy fogják felolvasni, hogy az űrlapmező üzemmódban a súgószöveg is elhangozzon.

A JAWS például így: Belépési név. Kettőspont. Szerkesztőmező. Minimálisan 8 karakter legyen.

Az NVDA így: Belépési név. Szerkesztőmező. Automatikus kiegészítés. Minimálisan 8 karakter legyen.

A VoiceOver pedig így: Belépési név. Minimálisan 8 karakter legyen. Szöveg szerkesztése

Érdekes megfigyelni, hogy a súgószöveg elhangzása mennyiben követi a címke, az űrlap és a súgószöveg sorrendiségét. A JAWS és az NVDA például legutoljára olvassa fel a súgószöveget, ami annyiból szerencsés, hogy így az űrlapmező címke szövege és a súgószöveg hallhatóan is jól elkülönül. A VoiceOver viszont közvetlenül az űrlapcímke után olvassa fel a súgószöveget.

Végezetül fontos megemlítenem, hogy az aria-describedby segítségével megvalósított logikai kapcsolódás miatt az űrlapmező és a hozzá tartozó súgószöveg a HTML kódban (és ezen keresztül akár vizuálisan) elvileg bármilyen sorrendben, egymástól távol is elhelyezkedhet. Ezzel azonban a gyakorlatban vigyázni kell, mert egyéb használhatósági és akadálymentességi kérdések merülhetnek fel. A súgószövegnek ugyanis a látó és a gyengénlátó felhasználók számára is egyértelműen kapcsolódnia kell az űrlapmezőhöz.