Skip to content
easeweb
Search topics

Signature pads with no way to type a signature

A form's signature field is a drawing pad and nothing else, so anyone who can't draw with a mouse, a finger or a stylus can't sign the form or send it.

WCAG 2.2
SC 2.1.3AAA
Required by
Not required by Section 508 or EN 301 549
Broken new SignaturePad(canvas)
The accessibility problem illustrated: Motor:How do I sign without a mouse?
01

The problem

People who use a keyboard, a switch, voice control or a screen reader can't sign a rental agreement whose only signature field is a drawing pad, so they can't send it.

02

Try it

Sign the rental agreement and send it, using the keyboard alone.

Type a name, then press Tab: does anything let you sign without drawing? Then apply a fix and try again. The pad still draws with a mouse or a finger.

Broken Can you fix this?

BrokenA drawing pad and nothing else

Signature

A recreated demo. The broken version is intentionally inaccessible.

03

The fix

Let people sign by typing their name.

Before
BrokenA drawing pad and nothing else
<form class="agreement">  <p class="field">    <label for="name">Full name</label>    <input id="name" name="name" autocomplete="name" required>  </p>  <div class="signature">    <p>Signature</p>    <canvas id="pad" width="400" height="140"></canvas>    <button type="button" id="clear">Clear</button>    <input type="hidden" name="signature" id="signature-data">    <p id="signature-error" class="error" hidden>Please sign in the box.</p>  </div>  <button type="submit">Sign and send</button></form>
What is wrong3 points

The name field and the buttons are fine. The signature is where it fails.

  • Tab moves from Full name to Clear: the pad is never a stop, and no key draws in it.
  • The hidden field is filled only from the drawing, so there is no other way to sign.
  • "Sign and send" refuses the form until something is drawn, so a keyboard user can't send it at all.
After

Type or draw

<form class="agreement">  <p class="field">    <label for="name">Full name</label>    <input id="name" name="name" autocomplete="name" required>  </p>  <fieldset class="signature">    <legend>Signature</legend>    <label for="typed-signature">Type your full name to sign</label>    <input id="typed-signature" name="typed-signature" autocomplete="name">    <p>Or draw your signature</p>    <canvas id="pad" width="400" height="140"></canvas>    <button type="button" id="clear">Clear drawing</button>    <input type="hidden" name="signature" id="signature-data">    <p id="signature-error" class="error" hidden>Type your name or draw your signature.</p>  </fieldset>  <button type="submit">Sign and send</button></form>
How it is fixed5 steps
  1. Group the signature in a fieldset with the legend "Signature", so both ways to sign are read as one question.
  2. Put a labelled text field first, "Type your full name to sign". Tab reaches it, a screen reader reads its label, and voice control can dictate into it.
  3. Keep the pad after it, under "Or draw your signature", for people who like to draw.
  4. Accept the form when either one is filled in, and only read the drawing when there is one.
  5. If neither is filled in, say both ways in the error and move focus to the typed field.

This fixes the Before and passes 2.1.3: signing no longer needs a path, because a typed name does the same job. The drawing stays as a shortcut for people who want it.

04

Verify the fix

4 checks, no mouse.

Test with: Keyboard, Screen reader, Speech input

0 of 4 checked

Record the OS, browser and assistive-technology versions, the build, the date, and the actual result of each step. Repeat after the form or the signature library changes.

Limits

This is a starting pattern, not a guarantee for every application. It shows how to give a signature a keyboard way; it doesn't decide whether a typed name is legally enough for your agreement. Dragging and other gestures with no single-pointer way are covered in pinch, drag and tilt gestures with no button. Check the complete flow with people who rely on a keyboard, a switch, voice control or a screen reader.

This is a recreated teaching example, not a finding about a named client. The code is a starting pattern: test it in your own product. No completed assistive-technology test is claimed here.

EaseWeb service

Fixed it? Keep it from coming back.

I turn guides like this one into rules your coding agents follow and checks your CI runs. Then I retest by hand with a keyboard and screen readers, periodically.

See the service