For functionality that can be operated using a single pointer, at least one of the following is true:
The down-event of the pointer is not used to execute any part of the function;
Abort or Undo
Completion of the function is on the up-event, and a mechanism is available to abort the function before completion or to undo the function after completion;
The up-event reverses any outcome of the preceding down-event;
Completing the function on the down-event is essential.
*Functions that emulate a keyboard or numeric keypad key press are considered essential.
*This requirement applies to web content that interprets pointer actions (i.e. this does not apply to actions that are required to operate the user agent or assistive technology).
Testing & RemediationHow to test:
- No down-event - check the functionalities of your site or app to ensure that interactivity does not happen upon down-event (the push down action of a mouse click or a tap). Activation should only happen on the up-event action (releasing of the mouse click or a tap).
- Up-event abort or undo - when an action is initiated by an up-event, ensure the user has a way to abort or undo. For example - when you are able to drag & drop an item, once the item is dropped the user gets a prompt to undo.
- Up reversal - with interactions where the down-event triggers a behavior, ensure that the up-event reverses the action. For example - press-and-hold actions such as where a transient popup appears (or a video plays) when the user presses on an object (down-event), but the popup (or video) disappears as soon as the user releases the pointer (up-event). Since the up-event reverses the preceding down event, the user is returned to their prior point, and has effectively cancelled the operation.
- releasing the picked-up item outside a drop target
- dragging the picked-up item back to its old position
- a confirmation dialog or an undo control appears after the item has been dropped
- Ensure that drag & drop actions can be cancelled
- Match the accessible name to the visible label
- Touch events are only triggered when touch is removed from a control