• 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