Accessibility Wiki

Changing a control must not auto-submit or navigate

Rule on-input-context-change · Forms · impact serious · Static + live

↩ Back to the rules index · WCAG cross-reference

Why it matters

A select that submits or navigates the moment its value changes yanks keyboard users away mid-choice: arrowing through the options already fires the change. Only inline onchange/oninput handlers are visible to static analysis — listeners attached by frameworks are not (accepted recall loss), so a clean result here is not proof of conformance.

How to fix

Let the user confirm the choice with a Go/Apply button. If auto-updating is essential, warn the user in text before the control.

Example

✕ Fails
<select onchange="this.form.submit()"><option>2023</option><option>2024</option></select>
✓ Passes
<select onchange="updateResults(this.value)"><option>2023</option><option>2024</option></select>

Example

✕ Fails
<select onchange="window.location = this.value"><option value="/en">English</option></select>
✓ Passes
<form action="/lang"><select name="lang"><option value="en">English</option></select><button>Go</button></form>

WCAG success criteria

3.2.2 On Input — Level A

Changing a control’s value (picking an option, typing) must not automatically trigger a change of context unless the user was warned beforehand.

Understanding 3.2.2

Standards

This rule contributes to the following standards:

WCAG A EN 301 549 Section 508 Trusted Tester

Standard Criteria
Section 508 3.2.2
EN 301 549 9.3.2.2

References