Almost all applicatons we interact with on the web are form driven. User-supplied data in; system conclusion out. To be sure, a decade plus of experience and innovation has seen UX improve by leaps and bounds. But we’re still building forms, and to that end I always enjoy re-visiting the basic question of how to build them well. Here’s the essence of a recent stab.
Requirement
A conference registration form to be used by admins from attending schools to submit school info, names and details for event attendees, and attendee ‘Pre-Conference’ and ‘Institute’ choices for each of the conference’s three days. Form submittal delivers an email receipt to the admin as well as the conference organizers.
Challenges
- Information There was a lot. From form submitters we required school info, point of contact info, attendees’ details and contact info, and attendees’ choices for each of the three days. We also needed to give a detailed breakdown of the choices along with cost information.
- Accumulation The form needed to accommodate multiple attendees from a school, and track each attendee’s choices for each day of the conference.
- Dependency While attendees would be able to choose only a single Pre-Conference or Institute for each of the first two days of the event, it would be possible to choose two Institutes for the third day. Possibilities for a second would depend on the choice made for the first.
- Calculation Cost determinants include a school’s ‘member’ status, the number of attendees it sends, whether its attendees are also ‘presenters,’ and which sessions its attendees register for. Each of these variables needed to be tracked so that before form submission we can present summary info including total cost.
- Validation …as always.
Solutions
- Wizard & Segregation Chunking long forms in to steps with wizards is a tried and true approach that works well here. And rather than blur the line between information we are requesting and information we are delivering, we sharpen it with two distinct views (‘Conference Registration’ and ‘Conference & Registration Details’).
- Adaptability We handle multiple attendees as they come, with a tabled layout. After an attendee has been entered with required info, we let the form user ‘Add Next Attendee’ by appending a new row to the table. With this approach we allow for an unlimited number of attendees but never present more fields than are required. In the single-page form, attendee session choices are recorded in a second table that synchs to the first.
- Custom Controls Basically we want dropdowns with Pre-Conference/Institute options for each of the three days… except that for the last day, multiple selections may be valid. Here, a custom control emulates the standard dropdown but ties logic to each selection/un-selection so that the user can never make an invalid selection. For visual consistency and greater flexibility, we use a variation of this control for the first two days also.
- JavaScript The language has always been great for client-side calculators. It still is.
- Minimal, Sometimes Live Feedback We decided that valid emails were important and that beyond that, we simply wanted to enforce completion of required fields. This stripped down set of requirements meant we could deliver a single, standard message for all error scenarios. When an error message displays, validation switches to a ‘live’ mode that removes error indicators as source data is corrected.
Closing Notes
Some aspects of the design get a little bit cheated when presented in the iframe pulled up by the demo button above. For IE, we decided on requiring users to use another browser or else to install Google Chrome Frame. While Chrome Frame detection works from within the iframe, Chrome Frame itself apparently does not.