- Success Criterion 2.4.3
- Conformance level A
Expanded Content That Never Receives Keyboard Focus
2.4.3 — Focus Order
Scenario
Setting
A food delivery app's restaurant menu
What’s wrong
Focus not moved to revealed content (accordion/inline edit) when operation depends on sequence.
Example
<button aria-label="Add note to order" onclick="showNoteField()">Note</button>
<!-- ...rest of menu items... -->
<div id="note-container" hidden>
<label for="note">Note for restaurant</label>
<textarea id="note"></textarea>
</div> Why it matters
The revealed note field lives at the bottom of the DOM, so pressing Tab after clicking the icon skips straight to the next menu item.
How to test
Trigger content that reveals more content (accordion expand, inline edit): check whether focus moves to the newly revealed content when the interaction depends on continuing there.
How to fix
When revealed content isn't adjacent in the DOM, send focus to it explicitly rather than relying on natural tab flow.
function showNoteField() {
const container = document.getElementById('note-container');
container.hidden = false;
document.getElementById('note').focus();
} Outcome
A diner clicks the note icon and starts typing immediately, without losing their spot in the menu.
Who is affected
Keyboard users adding special instructions must hunt for a field that never appears next in their tab order.
Learn more
- Understanding Understanding document (opens in a new tab)
Related scenarios
- Tab Order That Jumps Around the Page Illogically
- Dialog That Opens Far From the Button That Triggered It
- Visual Layout Order That Doesn’t Match the Keyboard Tab Order
- Modal That Opens Without Moving Keyboard Focus Into It
- Modal That Closes Without Returning Focus to Its Trigger
- Hidden Navigation Items That Are Still Reachable by Tab