Skip to content
easeweb
Search topics

Comment forms that post with no preview, edit or delete

A recipe blog's comment form publishes a comment the moment Post Comment is pressed, with no preview first and no way to edit or delete it after.

WCAG 2.2
SC 3.3.6AAA
Required by
Not required by Section 508 or EN 301 549
Broken
The accessibility problem illustrated: Cognitive:I meant teaspoons. How do I fix it?
01

The problem

People who slip when they read, type or dictate publish the mistake under their own name, with no chance to see it first or correct it after.

02

Try it

Your tip says tablespoons where you meant teaspoons. Post it, then try to put it right.

Does anything show you the comment before it is public, or let you edit or delete it after?

Broken Can you fix this?

BrokenPost Comment publishes at once

Comments

  1. Alex, 2 days ago

    Made this twice now. Roasting the tomatoes first is worth it.

A recreated demo. The broken version is intentionally inaccessible.

03

The fix

Let people check a comment first, or fix it after.

Before
BrokenPost Comment publishes at once
<h2>Comments</h2><ol class="comments">  <!-- The new comment, public as soon as Post Comment is pressed -->  <li id="comment-1042">    <p><b>Sam</b>, just now</p>    <p>Lovely soup. I'd add 2 tablespoons of salt at the end.</p>  </li></ol><form method="post" action="/comments">  <label for="comment">Comment</label>  <textarea id="comment" name="comment" required></textarea>  <label for="author">Name</label>  <input id="author" name="author" required autocomplete="name">  <button type="submit">Post Comment</button></form>
What is wrong3 points
  • The server publishes the comment as soon as the form arrives.
  • Nothing shows the comment back before it is public.
  • Once it is posted, its writer has no way to edit or delete it.
After

A preview in the thread before the comment is posted

<h2>Comments</h2><ol class="comments">  <!-- The new comment, public once Post Comment is pressed under its preview -->  <li id="comment-1042">    <p><b>Sam</b>, just now</p>    <p>Lovely soup. I'd add 2 tablespoons of salt at the end.</p>  </li></ol><form method="post" action="/comments/preview">  <label for="comment">Comment</label>  <textarea id="comment" name="comment" required></textarea>  <label for="author">Name</label>  <input id="author" name="author" required autocomplete="name">  <button type="submit">Preview comment</button></form>
How it is fixed4 steps
  1. Make the form's button "Preview comment", and have it save the comment as a draft that nobody else can see.
  2. Send back the same recipe page, opened at the draft: the comment in the thread, where it will appear, marked as a preview only its writer can see. The recipe and the comments before it stay on the page, so the tip is read where others will read it.
  3. In the form's place, put Post Comment, and Edit your comment, which brings the form back with the comment and the name kept, so fixing the slip takes one change, not a new comment.
  4. Publish only from Post Comment.

This fixes the Before and passes 3.3.6 with a way to review, confirm and correct the comment before it is final, as G98 describes.

04

Verify the fix

5 checks, no mouse.

Test with: Keyboard, Screen reader, Zoom

0 of 5 checked

Record the OS, browser and assistive-technology versions, the build, the date, and the actual result of each step. Repeat after the comment system, its plugins or its theme change.

Limits

This is a starting pattern, not a guarantee for every form. The example is a blog comment; reviews, forum posts, messages, contact forms and sign-ups need the same choice at the press that sends them. Telling people that their comment was posted, by sight and by screen reader, is a separate failure: see form success and error messages that are never announced. 3.3.6 is AAA, and W3C doesn't recommend asking for AAA across a whole site, but a public comment is where a mistake is cheap to prevent and awkward to live with. Test the complete flow, including any email the site sends, with the people and tools your readers rely on.

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