WHEN I use the tab key to move focus to controls inside the filter
I SEE focus is strongly visually indicated
Then when I use the focused control
I SEE quantity and type of results updates
2 Desktop screenreader
WHEN I use a desktop screenreader (NVDA, JAWS, VoiceOver)
AND
I use the tab key to move focus to controls inside the filter
I HEAReach control's purpose is clear
I HEAReach control uses an appropriate role
I HEAReach control expresses its state
I HEARsets of similar controls (like radio buttons) have a group name
Then when I use the focused control
I HEARquantity and type of results updates
3
Mobile screenreader
WHEN I use a screenreader
AND
I swipe to focus on controls inside the filter
I HEAReach control's purpose is clear
I HEAReach control uses an appropriate role
I HEAReach control expresses its state
I HEARsets of similar controls (like radio buttons) have a group name
Then when I doubletap with controls in focus
I HEARquantity and type of results updates
1 Keyboard & screen reader actions
When I use
I see/hear
Tab
Focus moves visibly to the controls inside the filter
Controls
Quantity and type of results updates
2 Mobile screenreader gestures
When I use
I hear
Swipe
Focus moves to the controls inside the filter
Doubletap
Quantity and type of results updates
3 Screenreader output
Reads
I hear
Name
Each control's purpose is clear
Role
Each control uses an appropriate role
State
Each control expresses its state
Group
Sets of similar controls (like radio buttons) have a group name
Code example
Do not apply aria-live the entire contents of the results (unless the returned information is always brief)
Do not move focus to the search results
Results use an unordered list <ul><li>, reinforcing the number and structure of results for people using a screen reader
The results summary uses aria-live="polite" and aria-atomic="true" to announce the entire summary on changes
<divclass="filter-container"><formid="categoryForm"aria-label="Filter Web criteria"><fieldset><legend>
Filter Web criteria
</legend><inputtype="radio"name="category"value="header"id="header"checked><labelfor="header">Header</label><inputtype="radio"name="category"value="nav"id="navigation"><labelfor="navigation">Nav</label><inputtype="radio"name="category"value="main"id="main"><labelfor="main">Main</label><inputtype="radio"name="category"value="footer"id="footer"><labelfor="footer">Footer</label></fieldset></form><divclass="filter-results"><divaria-live="polite"aria-atomic="true"><h3id="resultsCount"><!-- Results summary injected here --></h3></div><ulid="results"><!-- Results injected here --></ul></div></div>