Common Violations

Missing Form Submit Buttons

Every form needs an explicit, discoverable way to submit it — a real <button type="submit"> or <input type="submit">. Forms built to submit only via a JavaScript handler bound to a generic, non-submitting element (a styled <div> with an onclick, for instance) can leave keyboard users with no reliable way to trigger submission at all, and leave every user without a clear, conventional signal of "this is how I finish this form."

Why a real submit control matters

Native submit buttons come with built-in behavior that's easy to lose when a form is submitted only via custom JavaScript: pressing Enter while focused in any text field in the form automatically triggers a real submit button, a behavior users have learned to expect from virtually every form they've ever filled out. A form that only submits via a specifically-clicked custom element breaks that expectation — and if that custom element isn't a real, keyboard-focusable button (see Keyboard Inaccessible Controls), keyboard users may have no way to submit at all.

The fix

<!-- Before: no real submit control, relies entirely on a script binding a click on a generic div -->
<form id="signup">
  ...
  <div class="submit-btn" onclick="submitForm()">Sign Up</div>
</form>

<!-- After: a real submit button -->
<form id="signup">
  ...
  <button type="submit">Sign Up</button>
</form>

A real <button type="submit"> can still be styled however the design calls for, and can still trigger custom JavaScript (via the form's submit event) — using the correct element doesn't require giving up any control over behavior or appearance.

Where this shows up

Custom-built single-page-app forms and heavily-JavaScript-driven checkout flows are the most common source — teams building form submission entirely in JavaScript sometimes skip the native submit element because the framework's event handling doesn't strictly require it to function for a mouse user, missing that it's still required for full keyboard and Enter-key support.

Official references

Common questions

Why does a form need a real submit button?
A real submit control can be reached and activated with the keyboard and lets users submit by pressing Enter in a field. A `<div>` with a click handler usually can do neither, blocking keyboard and screen reader users.
Can a form submit without a submit button?
A script can submit a form, but relying on that alone is an accessibility failure. Provide a genuine submit control so every user, keyboard included, has a discoverable way to finish.
How do I fix a missing submit button?
Add a real submit control inside the form (a `<button>` or `<input>` of type submit). This also restores the expected press-Enter-to-submit behaviour for free.

Want to see how your own site scores?

Run a free accessibility scan