LFW

Insights · Getting forms right · 5 minutes

Submitting Without Losing the Page

In-page submission done honestly: the four states a submit button owes the visitor, why typed work must survive every failure, and how to make success audible as well as visible.

By Leland Fiegel · Web operations, LFW · August 6, 2026

The reload is a gamble with someone else's work

The traditional form submit is a small act of faith: the visitor presses the button, the page they were on is thrown away, and a new page arrives to say what happened. When everything works, that's fine. When anything fails — a validation error, a server hiccup, a dropped connection — the failure lands on whatever the server sends back, and in too many setups that page arrives with every field empty. The visitor's ten minutes of careful writing has been traded for a sentence about an invalid phone number.

That's the real reason to submit in place, without leaving the page. Not because reloads are old-fashioned, but because keeping the page keeps the visitor's work under their own hands. The paragraphs they typed, the options they chose, their place in the page — all of it survives whatever happens next, because nothing was thrown away.

No reload is not the goal. Certainty is.

But an in-page submission removes something too: the page navigation that, for all its faults, was unmistakable evidence that something happened. Take that away and replace it with nothing, and you get the worst version of this form — the visitor clicks, the page sits there unchanged, and they're left interrogating a motionless screen. Did it send? They click again. Now you may have two submissions, or none, and they still don't know.

So the decision isn't reload versus no reload. It's whether every state of the submission is unmistakable. A form that submits in place takes on the burden of narrating what the navigation used to narrate — and that burden is the actual work.

The four states a submit button owes the visitor

Idle: the button invites the click. Working: the instant the click lands, the button says so — it disables so a nervous second click can't create a duplicate, and its own text changes to something like 'Sending…' so the evidence sits exactly where the visitor is already looking. Failure: a plain-language message appears near the problem, and every field still holds what the visitor typed. Success: the form gives way to a confirmation that feels final — what was received and what happens next — not a form that silently resets itself and hopes the visitor draws the right conclusion.

The failure state deserves the most design attention, because it's the one that decides whether the visitor tries again. A failed submission that preserves the visitor's words is a hiccup; they press the button again and move on. A failed submission that eats them is frequently the end of the conversation — very few people rewrite a long message from memory for the benefit of a form that just discarded the first draft.

Success has an accessibility dimension that's easy to miss: if the confirmation only appears — a message swapped into the page — a visitor using a screen reader may hear nothing at all. The page changed and nobody said so. The confirmation needs to be announced, not just displayed, either by moving focus to it or by marking the region so assistive technology reads the change aloud. For public-sector sites this is the same standard as everything else on the page: state changes everyone can perceive.

When the script fails, the form must not

In-page submission runs on JavaScript, and JavaScript is the least dependable layer of any page — scripts get blocked by strict corporate networks, broken by an unrelated error elsewhere on the page, or simply fail to arrive on a bad connection. A form that only works when its script works has a silent failure mode aimed at exactly the visitors least equipped to diagnose it.

The honest construction is a real form underneath: a plain form that submits the traditional way on its own, with the in-page behavior layered on top when the script is present and healthy. Script loads, visitors get the calm no-reload experience. Script doesn't, the form still submits and a plain confirmation page still answers. Nobody is ever holding a button that does nothing.

The same humility applies to the network itself. When a submission times out mid-flight, the form can't know whether the message arrived — so it should say that plainly, keep the visitor's text, and offer the retry. Guessing 'success' when the truth is 'unknown' is how organizations end up apologizing for messages they never received.

The submit button is a promise

Everything above is one principle worn four ways: the moment someone presses submit, they've done their part, and every risk after that belongs to the form. Their work is protected, their uncertainty is answered, their failure costs them one more click at most. Get that right and the form feels trustworthy in a way visitors can't name — which is the only way most people ever evaluate an institution's competence online.

And when the failure state does fire, the words it uses matter as much as the mechanics. That's the next decision in this series: error messages that actually help, instead of announcing 'invalid' and leaving the visitor to guess what a valid life would look like.

Keep reading

August 9, 2026 · 5 minutes

Tap Targets and Mobile Keyboards

Fingertips are not cursors. Target sizes, tappable labels, and the field settings that decide which keyboard appears — the mobile details that quietly determine whether your form gets finished.

August 8, 2026 · 5 minutes

Error Messages That Actually Help

A form's error messages are the only conversation it ever has. What a useful error says, where it belongs on the page, when it should speak up, and who has to be able to perceive it.

Prefer to write?

Tell us what needs to work better.

Slow, fragile, hard to edit, missing a workflow — say it plainly. You'll get a straight answer, not a ticket number.

You'll get a straight answer, usually the same day.