{"id":193,"date":"2009-08-20T22:10:26","date_gmt":"2009-08-20T09:10:26","guid":{"rendered":"http:\/\/www.thunderguy.com\/semicolon\/?p=193"},"modified":"2009-09-09T22:26:46","modified_gmt":"2009-09-09T09:26:46","slug":"web-form-design-recommendations","status":"publish","type":"post","link":"https:\/\/thunderguy.com\/semicolon\/2009\/08\/20\/web-form-design-recommendations\/","title":{"rendered":"Web Form Design Recommendations"},"content":{"rendered":"<p>Here is a checklist of recommendations for form design. I extracted this from <a href=\" http:\/\/www.lukew.com\/\">Luke Wroblewski<\/a>&#8216;s excellent presentation on <a href=\" http:\/\/www.lukew.com\/resources\/articles\/WebForms_LukeW.pdf\">Best Practices For Web Form Design<\/a>; I took my favourite points, edited them, and arranged them into categories for easy reference. I use this checklist when designing and reviewing forms. For best results, view the <a href=\" http:\/\/www.lukew.com\/resources\/articles\/WebForms_LukeW.pdf\">original presentation<\/a> and commit it to memory first.<\/p>\n<h2>Individual fields<\/h2>\n<h3>Form label alignment<\/h3>\n<ul>\n<li>For reduced completion times &amp; familiar data input: top aligned<\/li>\n<li>When vertical screen space is a constraint: right aligned<\/li>\n<li>For unfamiliar, or advanced data entry: left aligned<\/li>\n<\/ul>\n<h3>Field lengths<\/h3>\n<ul>\n<li>When possible, use field length as an affordance<\/li>\n<li>Otherwise consider a consistent length that provides enough room for inputs<\/li>\n<\/ul>\n<h3>Validation<\/h3>\n<ul>\n<li>Employ <strong>flexible data entry<\/strong><\/li>\n<li>Use <strong>inline validation<\/strong> for inputs that have potentially high error rates<\/li>\n<li>Use <strong>suggested inputs<\/strong> to disambiguate<\/li>\n<li>Communicate limits<\/li>\n<li><strong>Avoid changing inputs<\/strong> provided by users<\/li>\n<\/ul>\n<h3>Help &amp; Tips<\/h3>\n<ul>\n<li>Minimise the amount of help &amp; tips required to fill out a form<\/li>\n<li>Help that is <strong>visible and adjacent<\/strong> to a data request is most useful<\/li>\n<li>When lots of unfamiliar data is being requested, consider using a dynamic help system<\/li>\n<\/ul>\n<h2>Field groups<\/h2>\n<h3>Layout<\/h3>\n<ul>\n<li>Use the <strong>minimum amount of visual elements<\/strong> necessary to communicate useful relationships<\/li>\n<li><strong>Consider tabbing expectations<\/strong> when laying out forms<\/li>\n<\/ul>\n<h3>Selection Dependent Inputs<\/h3>\n<ul>\n<li><strong>Maintain clear relationship<\/strong> between initial selection options<\/li>\n<li>Clearly associate additional inputs with their trigger<\/li>\n<\/ul>\n<h2>Actions<\/h2>\n<ul>\n<li><strong>Avoid secondary actions<\/strong> if possible<\/li>\n<li>Otherwise, <strong>ensure a clear visual distinction<\/strong> between primary &amp; secondary actions<\/li>\n<li><strong>Align primary actions<\/strong> with input fields for a clear path to completion<\/li>\n<\/ul>\n<h2>Form<\/h2>\n<h3>Progress<\/h3>\n<ul>\n<li><strong>Illuminate a clear path<\/strong> to completion<\/li>\n<li>Map <strong>progressive disclosure<\/strong> to prioritized user needs<\/li>\n<li>Provide indication of tasks in progress<\/li>\n<li>Disable \u201csubmit\u201d button after user clicks it to avoid duplicate submissions<\/li>\n<\/ul>\n<h3>Success<\/h3>\n<ul>\n<li><strong>Clearly communicate<\/strong> a data submission has been successful<\/li>\n<li>Provide feedback of data submitted<\/li>\n<\/ul>\n<h3>Errors<\/h3>\n<ul>\n<li>Clearly communicate an error has occurred: <strong>top placement<\/strong>, <strong>visual contrast<\/strong><\/li>\n<li><strong>Provide actionable remedies<\/strong> to correct errors<\/li>\n<li>Associate responsible fields with primary error message<\/li>\n<li>\u201cDouble\u201d the visual language where errors have occurred<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Here is a checklist of recommendations for form design. I extracted this from Luke Wroblewski&#8216;s excellent presentation on Best Practices For Web Form Design; I took my favourite points, edited them, and arranged them into categories for easy reference. I use this checklist when designing and reviewing forms. For best results, view the original presentation [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[84,18],"class_list":["post-193","post","type-post","status-publish","format-standard","hentry","category-usability","tag-usability","tag-web-development"],"_links":{"self":[{"href":"https:\/\/thunderguy.com\/semicolon\/wp-json\/wp\/v2\/posts\/193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thunderguy.com\/semicolon\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thunderguy.com\/semicolon\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thunderguy.com\/semicolon\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thunderguy.com\/semicolon\/wp-json\/wp\/v2\/comments?post=193"}],"version-history":[{"count":6,"href":"https:\/\/thunderguy.com\/semicolon\/wp-json\/wp\/v2\/posts\/193\/revisions"}],"predecessor-version":[{"id":201,"href":"https:\/\/thunderguy.com\/semicolon\/wp-json\/wp\/v2\/posts\/193\/revisions\/201"}],"wp:attachment":[{"href":"https:\/\/thunderguy.com\/semicolon\/wp-json\/wp\/v2\/media?parent=193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thunderguy.com\/semicolon\/wp-json\/wp\/v2\/categories?post=193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thunderguy.com\/semicolon\/wp-json\/wp\/v2\/tags?post=193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}