Skip to main content
WCAGrules
Quick navigation

Do not trigger actions on the down-event

The action fires the instant the button goes down, before anybody has let go, so sliding a finger off the wrong control saves nothing. F101 is the failure technique for that, and a match is a defect rather than a technique. Four things have to be true together before it applies, and knowing all four settles most of the argument. The function runs on the down-event, no way to abort or undo it exists, the up-event does not reverse it, and running on the down-event is not essential. A down-event control with an undo beside it passes. On-screen piano keys pass, because immediate response is the whole point, and so does anything emulating a keyboard or a numeric keypad, which covers PIN pads. Native buttons already pass, since click fires when the pointer is released.

How we find it in an audit

A reviewer presses each control, holds the button or the finger down, and watches for anything happening before release. Where something does happen, they slide off the control and let go somewhere harmless, which is the escape this rule exists to protect. If the outcome sticks, two questions follow. Whether an undo is offered, and whether the immediacy is essential rather than convenient. A source scan for mousedown, touchstart and pointerdown narrows the list of controls to try, and it decides nothing by itself.

How affected users experience it

Anyone whose aim is imprecise depends on being able to change their mind. A tremor, a head pointer, a stylus held at an angle, a phone used one-handed on a moving bus. The universal recovery is to slide off the wrong control before letting go, and this failure takes that away. The case that shows the cost best is a dialog holding a long form, with a Close button that fires on press. Brush it, and the form is gone.

Passes vs. fails

Passes: targets big enough to hit. Fails: tiny, touching controls.

Passes

btn.addEventListener("click", submitOrder); // fires on release, so sliding off cancels it

Fails

btn.addEventListener("mousedown", submitOrder);

The other techniques filed under this rule

3 guides on this site are filed under 2.5.2 Pointer Cancellation. W3C documents this one as a failure of that rule, so it describes a way the rule gets broken rather than a way to pass it.

This guide is our interpretation of W3C technique F101: Failure of Success Criterion 2.5.2 due to activating a control on the down-event. W3C publishes its techniques as guidance rather than as the standard, and says so on every one of them. The success criterion is what conformance is measured against, and a technique is one documented way to meet it.

Go somewhere useful

Find tools, resources and your workspace.

29 destinations