- Success Criterion 2.4.3
- Conformance level A
One Control Creating Two Separate Keyboard Tab Stops
2.4.3 — Focus Order
Scenario
Setting
A ride-hailing app's trip booking screen
What’s wrong
One control generating multiple consecutive tab stops (anchor wrapping a button, duplicated tabindex (keyboard-focus setting)) so focus lands twice on the same element.
Example
<a href="/confirm" tabindex="0">
<button>Book Now</button>
</a> Why it matters
Pressing Tab once lands on the wrapping link, then again on the identical-looking button, so Book Now gets announced twice for one action.
How to test
Tab through a single control (e.g., an anchor wrapping a button): if it produces two separate tab stops instead of one, it fails.
How to fix
Never nest a button inside a link or vice versa; pick one interactive element and style it as needed.
<a href="/confirm" role="button" class="btn">Book Now</a> Outcome
A rider tabs to Book Now once and activates the trip immediately.
Who is affected
Keyboard and screen reader users booking a trip get two redundant stops for what is functionally a single action.
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
- Expanded Content That Never Receives Keyboard Focus