Making the Form Flow Easily
"Flow" is the sense of the form as a task, from beginning to end, and it becomes of increasing importance as the length of a form increases beyond a few fields.
Some tips for dealing with longer forms:
- Crush them by reducing the amount of vertical space, especially if the form is going to be used repeatedly by the same users
- Split the form across multiple pages - the split should be natural (keep topics together) and there needs to be some sort of progress indicator
- Ask "anticipated" questions earlier - what the user expects to have to tell you to get what they want - and more oblique questions after
- When possible, adjust, prefill, or eliminate questions based on previous responses
There is a suggestion (common practice) to begin a form with simple and unobtrusive questions, then ask more difficult or invasive ones later, when the user feels "committed" to the form. Editorial note: this is old advice, pre-dating the internet, and I'm not sure if it holds true anymore (it could really tick people off if you "spring" these questions late).
On errors: the author suggests being gentle in the wording of error messages. It may be a simple mistake (the user made a typo), or it may be your fault (they didn't understand the question) - so be careful not to blame the user when an error occurs.
Validating data ensures that the data is complete and correct enough to process the form - which is also important to the user (they expect their data to be received and acted on).
- Validation should be done as early as possible
- The user should be given a clear indication of what has failed to validate (not a vague error message on a long page)
- The user should be given (gentle) guidance as to what they need to do (not why the error occurred, but what they must due to overcome it)
- The user should be able to address the problem without paging back
- The user should be able to address the problem without having to re-key other data
After submitting the form, the user should see a "thank you" message that:
- Indicates the task has been completed successfully
- Indicates what will happen next (and when it will happen)
- Indicates anything that the user may (or must) do as a follow-up
- Provides an easy way to print out any information (such as an order reference number)
- Provides a link (or multiple links) to a place that the user may wish to go now that the task is done (such as the site's home page)