ARIA toggle fields have an accessible name
Ensures every element with a semantic role also has an accessible name. Semantic roles include:
Fixing the problem
Correct markup solutions
The aria-toggle-field-name
contains five markup patterns that pass
testing criteria:
<!-- checkbox -->
<div id="pass1" role="checkbox">Newspaper</div> <!-- menuitemcheckbox -->
<ul role="menu"> <li id="pass2" role="menuitemcheckbox" aria-label="Word wrap" aria-checked="true"></li>
</ul> <!-- menuitemradio -->
<p id="pass3Label">Sans-serif</p>
<ul role="menu"> <li id="pass3" role="menuitemradio" aria-labelledby="pass3Label" aria-checked="true"></li>
</ul> <!-- radio -->
<div role="radiogroup"> <div id="pass4" role="radio" aria-checked="false" tabindex="0" title="Regular Crust"></div>
</div> <!-- switch -->
<div id="pass5" role="switch" aria-checked="true" aria-label="Toggle blue light:"> <span>off</span> <span>on</span>
</div>
Incorrect markup solutions
The aria-toggle-field-label
contains five markup patterns that fail
testing criteria:
<!-- checkbox -->
<div id="fail1" role="checkbox" aria-labelledby="does-not-exist"></div> <!-- menuitemcheckbox -->
<ul role="menu"> <li id="fail2" role="menuitemcheckbox" aria-checked="true"></li>
</ul> #3 <!-- menuitemradio -->
<ul role="menu"> <li id="fail3" role="menuitemradio" aria-checked="true"></li>
</ul> #4 <!-- radio -->
<div role="radiogroup"> <div id="fail4" role="radio" aria-checked="false" tabindex="0"></div>
</div> #5 <!-- switch -->
<div id="fail5" role="switch" aria-checked="true"> <span></span> <span></span>
</div>