SlideShare uma empresa Scribd logo
1 de 30
Accessible Dynamic Forms
and Form Validation with
jQuery
Dylan Barrell (@dylanbarrell)
Vice President of Product Development
October, 2013
Examples and Code
• GitHub Repository with Examples
– https://github.com/dylanb/a11yvalid

• Uses a11yfy code
– https://github.com/dylanb/a11yfy
Overview
•

Commonly Violated WCAG 2.0 (A, AA) SC

•

Form Accessibility Fundamentals
–
–

Instructions

–

Layout

–

Dynamism

–
•

Labels

Controls

Validation Fundamentals
–

Fundamentals

–

Layout and navigation

–

Error messages and summaries
Common Success Criteria
Perceivable
•

All labels must be programmatically associated with the input
field [WCAG 1.3.1 A]

•

Labels must be closely and visually associated with the input
field [Best Practice]

•

Error Messages must be associated with the input field
[WCAG 1.3.1 A]

•

Do not use color alone to indicate differences between fields
[WCAG 1.4.1 A]
–

•

Required/Optional Fields, Error Fields

Color Contrast between controls, labels, instructions, errors
and the background must be sufficient [WCAG 1.4.3 AA]
Common Success Criteria
Operable
•

Error messages that apply to the whole form must be
announced automatically [WCAG 2.4.3 A]

•

Instructions that update/change dynamically must be
announced automatically [WCAG 2.4.3 A]

•

If you take action that allows the sighted mouse user to
quickly identify and deal with fields that are in error, then an
equivalent mechanism should be provided for keyboard users
[WCAG 2.1.1 A]

•

No Keyboard trap [WCAG 2.1.2 A]
Common Success Criteria
Operable
•

Focus order [WCAG 2.4.3 A]

•

Focus Visible [WCAG 2.4.7 AA]

•

Everything must be operable with the keyboard [WCAG 2.1.1
A]
Common Success Criteria
Understandable
•

On focus [WCAG 3.2.1 A]

•

On input [WCAG 3.2.2 A]

•

Error Suggestion [WCAG 3.3.3 AA]

•

Error prevention (Legal, Financial, Test data) [WCAG 3.3.4
AA]
Common Success Criteria
Robust
•

Name, Role, Value and State [WCAG 4.1.2 A]
Labels
Simple Labels
•

Use for-id association
<label for=“myinputid”>Label Text</label>
<input id=“myinputid” type=“text” />

•

Use aria-labelledby
<label id=“mylabelid”>Label Text</label>
<input aria-labelledby=“mylabelid” type=“text” />

•

Use label wrapping
<label for=“myinputid”>Label Text
<input id=“myinputid” type=“text” />
</label>

•

Example
Labels
Simple Labels
•

Use aria-label and/or title (beware)
<input id=“search” type=“text” arialabel=“Search”placeholder=“Search”/><button>Search</button>
–

•

or
<input id=“search” type=“text”
title=“Search”placeholder=“Search”/><button>Search</button>

Example
Labels
Multiple Labels
•

Groups - fieldset
<fieldset>
<legend>Social Security Number</legend>
<input type="text" name="ssn1" id="ssn1” title="first three
digits"/> <input type="text" name="ssn2" id="ssn2” title="middle two
digits"/> <input type="text" name="ssn3" id="ssn3” title="last four
digits"/>
</fieldset>

•

Example
Labels
Multiple Labels
•

Groups – aria-labelledby
<span id=“gender-group”>Gender</span>
<input aria-labelledby=“gender-group male-gender”
name=“gender” value=“male” type=“radio” />
<label id=“male-gender”>Male</label>
<input aria-labelledby=“gender-group female-gender”
name=“gender” value=“female” type=“radio” />
<label id=“female-gender”>Female</label>

•

Example
Instructions
Advisory Text, Additional Text…
•

aria-describedby
<p>
<label for=“mybirthdateid”>Date of Birth</label>
<input id=“mybirthdateid” type=“text” aria-describedby=“datefmt”/>
<span id=“datefmt”>format: dd/mm/yyyy</span>
</p>

•

Example
Layout
Locate related items close to one another
•

Labels to input fields

•

Error messages to input fields

•

Instructional text/help icons to input fields
Layout
Layout
Layout
Layout
Layout
Layout
Maintain natural DOM order
•

Do not use tabindex

•

Do not use unnecessary JavaScript focus management in forms

Example
Dynamism
On Focus/Blur
•

Often used to show additional instructions
–

•

Use aria-live and related attributes to announce changes

Often used to do form validation
–
–

•

Use blur to recapture focus into field if it fails to validate (do not create a
keyboard trap)
Use aria-live to announce errors

Sometimes used to add fields
–

Use interim “busy” modal to trap and manage focus
Dynamism
On Change/Input
•

Do not auto advance multi-part fields (e.g. SSN, Date, Phone
number)*

•

Use the modal focus trapping technique if modifying the form

•

Be aware that updates to labels and aria-describedby fields
do not auto announce
–

Use aria-live

Example – Good and Bad
Dynamism
jQuery Animations
•

Error Messages must be in the DOM and visible when the
appropriate field receives focus

•

Form fields must be in the DOM, visible and enabled in order
to receive focus programmatically

•

iOS focus management requires waiting a full second after
show before an element can receive focus
Controls
Use native controls where available
•

<button> or <input type=“submit|image” > and not <a>

•

Use standard radio buttons if possible

•

Conditional use of HTML5 new input types (iOS)
–

•

Date, Slider etc.

Avoid use of “retrofit roles”
–

role=“button”

–

role=“checkbox”

–

role=“textbox”

–

role=“radio”

Example
Validation Fundamentals
Be consistent
•

Choose either automatic validation or validation on
submission

•

Choose one of:
–

Telling users which fields are required

–

Telling users which fields are optional

•

Consistent layout and visual design

•

Consistent markup!!
Error Layout and Navigation
Structure
•

Ensure error messages are visually distinct

•

Ensure error messages are visually associated with the input
field(s)
–
–

•

Cognitive disabilities
Zoom users

Ensure that attention is drawn to the items that are in error
–

–

•

Submission: Either focus on first field or focus on error summary

Auto: revert focus to the field that is in error (do not create a keyboard
trap)

In large forms, make navigation between fields that are inerror easy
–

Keyboard navigation and mouse navigation
Layout
Layout
Error Messages
Structure
•

Ensure that error messages are programmatically associated
with the input field
–

Use techniques previously mentioned

•

Ensure that form-wide error information either receives focus
on validation failure (submission only) or is announced
automatically

•

Ensure that error messages are easy to understand

•

If validation occurs on submission, validate all form fields at
once and provide a summary of all the errors in a summary

Final Example
Questions

dylan.barrell@deque.com
http://www.deque.com/
@dylanbarrell
@unobfuscator
http://unobfuscated.blogspot.com/

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Flutter
FlutterFlutter
Flutter
 
Angular Observables & RxJS Introduction
Angular Observables & RxJS IntroductionAngular Observables & RxJS Introduction
Angular Observables & RxJS Introduction
 
Core java
Core javaCore java
Core java
 
React Native
React NativeReact Native
React Native
 
JavaScript Tutorial
JavaScript  TutorialJavaScript  Tutorial
JavaScript Tutorial
 
React and redux
React and reduxReact and redux
React and redux
 
How to Convert a Component Design into an MUI React Code
How to Convert a Component Design into an MUI React CodeHow to Convert a Component Design into an MUI React Code
How to Convert a Component Design into an MUI React Code
 
Spring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
Spring I/O 2012: Natural Templating in Spring MVC with ThymeleafSpring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
Spring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
 
Apache tomcat
Apache tomcatApache tomcat
Apache tomcat
 
Swagger UI
Swagger UISwagger UI
Swagger UI
 
Intro to React
Intro to ReactIntro to React
Intro to React
 
Javascript by geetanjali
Javascript by geetanjaliJavascript by geetanjali
Javascript by geetanjali
 
Javascript
JavascriptJavascript
Javascript
 
Javascript 101
Javascript 101Javascript 101
Javascript 101
 
Reactjs
Reactjs Reactjs
Reactjs
 
Serialization & De-serialization in Java
Serialization & De-serialization in JavaSerialization & De-serialization in Java
Serialization & De-serialization in Java
 
Introduction to java
Introduction to javaIntroduction to java
Introduction to java
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
Java Script ppt
Java Script pptJava Script ppt
Java Script ppt
 
S60 3rd FP2 Widgets
S60 3rd FP2 WidgetsS60 3rd FP2 Widgets
S60 3rd FP2 Widgets
 

Destaque

Javascript validation karan chanana
Javascript validation karan chananaJavascript validation karan chanana
Javascript validation karan chanana
karanchanan
 
Javascript validation assignment
Javascript validation assignmentJavascript validation assignment
Javascript validation assignment
H K
 

Destaque (6)

Javascript validation karan chanana
Javascript validation karan chananaJavascript validation karan chanana
Javascript validation karan chanana
 
Javascript validation assignment
Javascript validation assignmentJavascript validation assignment
Javascript validation assignment
 
Form Validation
Form ValidationForm Validation
Form Validation
 
Client-Side Performance Testing
Client-Side Performance TestingClient-Side Performance Testing
Client-Side Performance Testing
 
Patterns of a “good” test automation framework
Patterns of a “good” test automation frameworkPatterns of a “good” test automation framework
Patterns of a “good” test automation framework
 
The What, Why and How of (Web) Analytics Testing (Web, IoT, Big Data)
The What, Why and How of (Web) Analytics Testing (Web, IoT, Big Data)The What, Why and How of (Web) Analytics Testing (Web, IoT, Big Data)
The What, Why and How of (Web) Analytics Testing (Web, IoT, Big Data)
 

Semelhante a Accessible dynamic forms

#42 green lantern framework
#42   green lantern framework#42   green lantern framework
#42 green lantern framework
Srilu Balla
 

Semelhante a Accessible dynamic forms (20)

Toolkit for the Digital Accessibility Space
Toolkit for the Digital Accessibility SpaceToolkit for the Digital Accessibility Space
Toolkit for the Digital Accessibility Space
 
Dive Into Mobile - Guidelines for Testing, Native and Web Apps
Dive Into Mobile - Guidelines for Testing, Native and Web AppsDive Into Mobile - Guidelines for Testing, Native and Web Apps
Dive Into Mobile - Guidelines for Testing, Native and Web Apps
 
#42 green lantern framework
#42   green lantern framework#42   green lantern framework
#42 green lantern framework
 
Accessibility: Navigation, Forms, & Multimedia
Accessibility: Navigation, Forms, & MultimediaAccessibility: Navigation, Forms, & Multimedia
Accessibility: Navigation, Forms, & Multimedia
 
Creating a Great XPages User Interface
Creating a Great XPages User InterfaceCreating a Great XPages User Interface
Creating a Great XPages User Interface
 
Creating a Great XPages User Interface, TLCC Teamstudio Webinar - Feb, 2014
Creating a Great XPages User Interface, TLCC Teamstudio Webinar - Feb, 2014Creating a Great XPages User Interface, TLCC Teamstudio Webinar - Feb, 2014
Creating a Great XPages User Interface, TLCC Teamstudio Webinar - Feb, 2014
 
Sitecore code review checklist
Sitecore code review checklistSitecore code review checklist
Sitecore code review checklist
 
Accessibility in Design systems - the pain and glory
Accessibility in Design systems - the pain and gloryAccessibility in Design systems - the pain and glory
Accessibility in Design systems - the pain and glory
 
Mastering Test Automation: How to Use Selenium Successfully
Mastering Test Automation: How to Use Selenium Successfully Mastering Test Automation: How to Use Selenium Successfully
Mastering Test Automation: How to Use Selenium Successfully
 
Accessibility and universal usability
Accessibility and universal usabilityAccessibility and universal usability
Accessibility and universal usability
 
How to use selenium successfully
How to use selenium successfullyHow to use selenium successfully
How to use selenium successfully
 
Functional UI Testing
Functional UI TestingFunctional UI Testing
Functional UI Testing
 
A Toolkit for Digital Accessibility
A Toolkit for Digital Accessibility A Toolkit for Digital Accessibility
A Toolkit for Digital Accessibility
 
Oracle Apps - Forms
Oracle Apps - FormsOracle Apps - Forms
Oracle Apps - Forms
 
1.3.5 more than autocomplete
1.3.5 more than autocomplete1.3.5 more than autocomplete
1.3.5 more than autocomplete
 
Accessibility - A feature you can build
Accessibility - A feature you can buildAccessibility - A feature you can build
Accessibility - A feature you can build
 
Testable requirements
Testable requirementsTestable requirements
Testable requirements
 
Testable Requirements
Testable Requirements Testable Requirements
Testable Requirements
 
Ooad
OoadOoad
Ooad
 
FlexNet Delivery and FlexNet Operations On-Demand Tips & Tricks
FlexNet Delivery and FlexNet Operations On-Demand Tips & TricksFlexNet Delivery and FlexNet Operations On-Demand Tips & Tricks
FlexNet Delivery and FlexNet Operations On-Demand Tips & Tricks
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 

Accessible dynamic forms

  • 1. Accessible Dynamic Forms and Form Validation with jQuery Dylan Barrell (@dylanbarrell) Vice President of Product Development October, 2013
  • 2. Examples and Code • GitHub Repository with Examples – https://github.com/dylanb/a11yvalid • Uses a11yfy code – https://github.com/dylanb/a11yfy
  • 3. Overview • Commonly Violated WCAG 2.0 (A, AA) SC • Form Accessibility Fundamentals – – Instructions – Layout – Dynamism – • Labels Controls Validation Fundamentals – Fundamentals – Layout and navigation – Error messages and summaries
  • 4. Common Success Criteria Perceivable • All labels must be programmatically associated with the input field [WCAG 1.3.1 A] • Labels must be closely and visually associated with the input field [Best Practice] • Error Messages must be associated with the input field [WCAG 1.3.1 A] • Do not use color alone to indicate differences between fields [WCAG 1.4.1 A] – • Required/Optional Fields, Error Fields Color Contrast between controls, labels, instructions, errors and the background must be sufficient [WCAG 1.4.3 AA]
  • 5. Common Success Criteria Operable • Error messages that apply to the whole form must be announced automatically [WCAG 2.4.3 A] • Instructions that update/change dynamically must be announced automatically [WCAG 2.4.3 A] • If you take action that allows the sighted mouse user to quickly identify and deal with fields that are in error, then an equivalent mechanism should be provided for keyboard users [WCAG 2.1.1 A] • No Keyboard trap [WCAG 2.1.2 A]
  • 6. Common Success Criteria Operable • Focus order [WCAG 2.4.3 A] • Focus Visible [WCAG 2.4.7 AA] • Everything must be operable with the keyboard [WCAG 2.1.1 A]
  • 7. Common Success Criteria Understandable • On focus [WCAG 3.2.1 A] • On input [WCAG 3.2.2 A] • Error Suggestion [WCAG 3.3.3 AA] • Error prevention (Legal, Financial, Test data) [WCAG 3.3.4 AA]
  • 8. Common Success Criteria Robust • Name, Role, Value and State [WCAG 4.1.2 A]
  • 9. Labels Simple Labels • Use for-id association <label for=“myinputid”>Label Text</label> <input id=“myinputid” type=“text” /> • Use aria-labelledby <label id=“mylabelid”>Label Text</label> <input aria-labelledby=“mylabelid” type=“text” /> • Use label wrapping <label for=“myinputid”>Label Text <input id=“myinputid” type=“text” /> </label> • Example
  • 10. Labels Simple Labels • Use aria-label and/or title (beware) <input id=“search” type=“text” arialabel=“Search”placeholder=“Search”/><button>Search</button> – • or <input id=“search” type=“text” title=“Search”placeholder=“Search”/><button>Search</button> Example
  • 11. Labels Multiple Labels • Groups - fieldset <fieldset> <legend>Social Security Number</legend> <input type="text" name="ssn1" id="ssn1” title="first three digits"/> <input type="text" name="ssn2" id="ssn2” title="middle two digits"/> <input type="text" name="ssn3" id="ssn3” title="last four digits"/> </fieldset> • Example
  • 12. Labels Multiple Labels • Groups – aria-labelledby <span id=“gender-group”>Gender</span> <input aria-labelledby=“gender-group male-gender” name=“gender” value=“male” type=“radio” /> <label id=“male-gender”>Male</label> <input aria-labelledby=“gender-group female-gender” name=“gender” value=“female” type=“radio” /> <label id=“female-gender”>Female</label> • Example
  • 13. Instructions Advisory Text, Additional Text… • aria-describedby <p> <label for=“mybirthdateid”>Date of Birth</label> <input id=“mybirthdateid” type=“text” aria-describedby=“datefmt”/> <span id=“datefmt”>format: dd/mm/yyyy</span> </p> • Example
  • 14. Layout Locate related items close to one another • Labels to input fields • Error messages to input fields • Instructional text/help icons to input fields
  • 20. Layout Maintain natural DOM order • Do not use tabindex • Do not use unnecessary JavaScript focus management in forms Example
  • 21. Dynamism On Focus/Blur • Often used to show additional instructions – • Use aria-live and related attributes to announce changes Often used to do form validation – – • Use blur to recapture focus into field if it fails to validate (do not create a keyboard trap) Use aria-live to announce errors Sometimes used to add fields – Use interim “busy” modal to trap and manage focus
  • 22. Dynamism On Change/Input • Do not auto advance multi-part fields (e.g. SSN, Date, Phone number)* • Use the modal focus trapping technique if modifying the form • Be aware that updates to labels and aria-describedby fields do not auto announce – Use aria-live Example – Good and Bad
  • 23. Dynamism jQuery Animations • Error Messages must be in the DOM and visible when the appropriate field receives focus • Form fields must be in the DOM, visible and enabled in order to receive focus programmatically • iOS focus management requires waiting a full second after show before an element can receive focus
  • 24. Controls Use native controls where available • <button> or <input type=“submit|image” > and not <a> • Use standard radio buttons if possible • Conditional use of HTML5 new input types (iOS) – • Date, Slider etc. Avoid use of “retrofit roles” – role=“button” – role=“checkbox” – role=“textbox” – role=“radio” Example
  • 25. Validation Fundamentals Be consistent • Choose either automatic validation or validation on submission • Choose one of: – Telling users which fields are required – Telling users which fields are optional • Consistent layout and visual design • Consistent markup!!
  • 26. Error Layout and Navigation Structure • Ensure error messages are visually distinct • Ensure error messages are visually associated with the input field(s) – – • Cognitive disabilities Zoom users Ensure that attention is drawn to the items that are in error – – • Submission: Either focus on first field or focus on error summary Auto: revert focus to the field that is in error (do not create a keyboard trap) In large forms, make navigation between fields that are inerror easy – Keyboard navigation and mouse navigation
  • 29. Error Messages Structure • Ensure that error messages are programmatically associated with the input field – Use techniques previously mentioned • Ensure that form-wide error information either receives focus on validation failure (submission only) or is announced automatically • Ensure that error messages are easy to understand • If validation occurs on submission, validate all form fields at once and provide a summary of all the errors in a summary Final Example

Notas do Editor

  1. [Do we want a fed graphic or photo here?][TYLER: If you do want an image, can you let me know if “fed” just means government in this context?]
  2. Although this is the currently preferred method for group labels, it is subject to differing implementations from AT to AT and some ATs have chosen to implement this in an irritating fashion (e.g. JAWS will announce the group label when focus moves to every sub-field, whereas NVDA will only do this on the first field in the group)
  3. Allows for more consistent support by Ats (controllable by you) but is not as widely supported by AT
  4. Be aware – bugs exist in combined use of aria-live and aria-describedby
  5. If you must use animations, then just be aware of the issues they create and work around them
  6. Consistency is one of the most important attributes of a site or application in order to make it easy to use.Remember, visual consistency does not equal consistency from a perspective of accessibility – consistent markup is as important as consistent visual layout. For example, if something looks like a button and is marked up as a button the first time and looks the same but is marked up as an anchor the second time, this can cause users to waste time, repeat commands and/or get confused.
  7. A user who is sighted should be able to immediately identify the fields that are in error as distinct from those that are not. Remember to not use color alone, use icons too or flip the background and foreground (light on dark vs. dark on light)Make sure it is unambiguous as to which field the error belongs to and make sure that this connection is discernable easily when using a screen magnifierTo assist users with cognitive disabilities and blind users, draw focus immediately to the first field that is in error and/or the summary if validation is done on submission. If validation is done automatically, then draw the focus back to the first field in error
  8. Use the techniques described previously to associate the error messages with the input fields. In order of preference, make them part of the label first and if that is not possible due to the markup, add them as a hint through aria-describedby.Making error messages easy to understand involves at least: 1) making sure that the reading level required to understand it is appropriate, and 2) that if the error was due to content format or content rather than the omission of a required field, that additional information be supplied about the reason the format or content was not valid (remember to not compromise security)