• Success Criterion 2.5.7
  • Conformance level AA
  • W3C reference F108

Feature Operable Only by Dragging, With No Alternative

2.5.7 — Dragging Movements

Scenario

Setting

A hospital's patient portal appointment scheduler

What’s wrong

Something must be dragged to operate it and there is no click/tap alternative (no 'move to' menu, no buttons).

Example

apptCard.addEventListener('dragstart', handleDragStart);
calendarDay.addEventListener('drop', (e) => bookAppointment(apptCard.id, calendarDay.date));
// no click path to booking exists anywhere on the page

Why it matters

A patient who can't perform a sustained drag can't book an appointment on this scheduler at all, no matter how urgent.

How to test

Try to complete the drag operation using only clicks/taps (arrows, a 'move to' menu, or a picker) instead of dragging: if nothing else works, it fails.

How to fix

A 'move to' menu triggered by a click or tap must always exist alongside drag and drop.

apptCard.addEventListener('click', () => openDaySelectMenu(apptCard.id));
// the menu lets the user pick a day and time, then confirm with a tap

Outcome

A patient taps the appointment, picks a day from a list, and it's booked without any dragging.

Who is affected

Wheelchair users, people with limited fine motor control, and switch-access users who can't perform drag gestures.

Learn more