designing great forms

Post on 09-Dec-2014

1.323 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Here are my slides for my talk at The Ajax Experience back in 2008.

TRANSCRIPT

Designing Great FormsDesigning Great Forms

Josh FraserCo-Founder EventVue

Hi. I’m Josh.Hi. I’m Josh.

I’m the co-founder of EventVue.

Find me on the web at:

Website: www.joshfraser.comEmail: josh@eventvue.comBlog: www.onlineaspect.comTwitter: joshfraz

Why talk about forms?Why talk about forms?

Small changes can make a Small changes can make a big differencebig difference

Left-aligned, left of fieldLeft-aligned, left of fieldAverage saccade time: 500ms

Right-aligned, left of fieldRight-aligned, left of fieldAverage saccade time: 205ms

Left-aligned, above fieldLeft-aligned, above fieldAverage saccade time: 50ms

Understanding your usersUnderstanding your usersLinkedIn advanced search

Understanding your usersUnderstanding your usersEventVue date input

OR

Contextual user interfacesContextual user interfaces

Good forms show what you need to see at the moment you need to see it and not a minute sooner.

Hide optional fields and reveal them using CSS & JavaScript.

Reduce frictionReduce friction

You introduce friction with unnecessary fields, extra clicks and text labels that take a long time to read.

The more friction you have, the harder it is to get the user to YOUR desired destination

The conversion ruleThe conversion rule

“The conversion rate of a registration page is inversely correlated to the number of fields.” – Bill Flagg

SimplifySimplify

LocationLocation

Ask users for their zip code instead of their city and state

Use the google.loader.ClientLocation property from the Google AJAX API to automatically detect the users country, city, state and lat/lng.

Time zonesTime zones

Use JavaScript to automatically detect the GMT offset and DST

Credit card typesCredit card types

Why make the user select their credit card type from a drop-down?

Starts with a 3 it’s American ExpressStarts with a 4 it’s a VisaStarts with a 5 it’s a MasterCardStarts with a 6 it’s a Discover card

Profile picturesProfile picturesReplacing the file upload field

Increased the number of users on EventVue who added a profile picture by 16%

TagsTagsGive personalized suggestions that users can add with a single click.

Increased the number of users on EventVue who added tags by 21%

External contentExternal content

Automatically find your users content around the web:

Twitter (Twitter API)Blog (MyBlogLog API)Facebook profile (Facebook Connect)LinkedIn profile (LinkedIn API)Website (From any of the above)

CaptchasCaptchas

Introduce an incredible amount of friction

Are often used unnecessarily

And are easily broken using advanced text recognition or cheap labor

Instant feedbackInstant feedback

Tell me exactly what you’re looking for

- Use onfocus to show tips

Tell me ASAP if I did something wrong

- Use AJAX calls to handle error checking

3 way to check for errors3 way to check for errors

1) Only check on the server

2) Check with both JavaScript and server side code

3) Use AJAX calls for error checking

Retain stateRetain state

Things to checkThings to check

Field isn’t blank or of the wrong type

Passwords match

Email address is valid (use both regexp and an MX lookup)

Credit card number is valid (LUHN formula)

Use standard conventionsUse standard conventions

Red for errors

Green for success Yellow for warnings

Increase completion ratesIncrease completion rates

Delay the collection of information until later. Let people get value before making the big ask.

Increase completion ratesIncrease completion rates

Send emails when people bail out half-way through. Be sure to retain state so people can pick up where they left off.

Increase completion ratesIncrease completion rates

Add a progress bar.

Increased the number of EventVue users who completed their entire profile by 25%

Be obsessive about detailsBe obsessive about details

Handling double submitsHandling double submits

Use JavaScript to submit the form. Disable once it’s been used once.

If JavaScript is disabled, display a warning message.

Check for duplicate submissions on the server as well.

Google toolbar auto-fillGoogle toolbar auto-fill

Google toolbar auto-fill:http://toolbar.google.com/autofill_help.html

ECML (Electronic Commerce Modeling Language):http://www.ietf.org/rfc/rfc3106.txt

AccessibilityAccessibility

Important fields for screen readers:

FieldsetLegendAccesskey

<fieldset><legend>Contact Information</legend><input name='fname' accesskey='f' /></fieldset>

Labels and tabindexLabels and tabindex

Use labels to associate descriptions with fields – especially with checkboxes.

Make sure your tabindex is in the correct order

<label for='fname'>First Name</label><input type='text' id='fname' name='fname' tabindex='1' />

Auto-tabAuto-tabUse auto-tab to automatically move to the next field when you reach a specified # of chars.

Great for phone numbers, social security numbers, etc.

Enforce a strict format without breaking up the flow of entering data.

Auto-tabAuto-tab<input type="text" name="areacode” tabindex="1" maxlength="3" />

function autoTab(e) { if(this.value.length == this.getAttribute("maxlength") && e.KeyCode != 8 && e.keyCode != 16 && e.keyCode != 9) { new Field.activate(findNextElement(this.getAttribute("tabindex"))); }}

function findNextElement(index) { elements = new Form.getElements("my_form"); for(i = 0; i < elements.length; i++) { element = elements[i]; if(parseInt(element.getAttribute("tabindex")) == (parseInt(index) + 1)) { return element; } } return elements[0];}

Auto-focusAuto-focus

Automatically focus on the first form field when you load a page. Be sure to exclude hidden or disabled fields. Only use on pages where filling out the form is the primary action.

ResourcesResourcesHow to Build Great Forms by Josh Fraserhttp://www.onlineaspect.com/2007/05/18/how_to_build_great_forms/

Auto detect a time zone with JavaScript by Josh Fraserhttp://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/

10 Tips To A Better Form by Chris Campbellhttp://particletree.com/features/10-tips-to-a-better-form/

Label Placement in Forms by Matteo Penzohttp://uxmatters.com/MT/archives/000107.php

More Signup Power by Bill Flagghttp://billflagg.blogspot.com/2008/04/more-signup-power.html

Google Client Locationhttp://code.google.com/apis/ajax/documentation/#ClientLocation

The CAPTCHA Alternatives by Slobodan Kovacevichttp://www.arraystudio.com/as-workshop/the-captcha-alternatives.html

Inside India’s CAPTCHA solving economyhttp://blogs.zdnet.com/security/?p=1835

Thank you!Thank you!

www.joshfraser.comjosh@eventvue.com

Questions?Questions?

www.joshfraser.comjosh@eventvue.com

top related