For much of the 20th century and into the 21st, society largely dictated what “disabled” meant. We were told we were disabled; that we were broken; that we didn’t matter because we weren’t whole. “Disabled” in this context is clearly used as an adjective to describe that state of a person: You’re disabled.
Indeed, if we search the dictionary for disabled, the first result is the adjective form: impaired or limited by a physical, mental, cognitive, or developmental condition : affected by disability.
As a backlash to being told we were non-functional—the medical model and ableist view of disability—some people switched to person-first language. It was thought that if you center the person instead of their disability, we were respecting people with disabilities. In short, the opposite proved to be true. The concept of disability became clouded; some people, like members of the Deaf community, don’t view their condition as disabling. For others, disability is an important part of self-identification and that got lost.
In the last few years, this has led to the disabled community taking back the word “disabled” to describe themselves, but with one very important distinction: the word is no longer used as an adjective but in its other form as a verb.
If we search the dictionary for disable, we note that its past participle is “disabled.” This is the basis for the passive voice instead of an adjective in the sentence, “I’m disabled.” We know it’s passive voice because you can add “by zombies” to the end. But passive voice has the annoying habit of obscuring the real actor.
I’m disabled by society and the built environment.
Rachele DiTullio
It’s important that those outside the disability community understand what we mean when we use “disabled” versus what they might mean. I encourage you to let them know you are fine just as you are. You are not disabled as in broken. You are forced to live in a world that disables you through intentional action, by not making society inclusive and accessible.
What do you think? Adjective or verb? Let me know on Twitter.
Forms have a strong semantic structure from labeling controls to ensuring the states of controls are announced by assistive technology. We look at the basics of building a form with different input types, adding in the necessary HTML attributes to link our form elements semantically, sprinkling in ARIA attributes and data validation and errors.
The two basic parts of a form field are its <label> and <input> elements. We semantically link the two by
Using the <label for="uniqueID"> attribute which matches the <input id="uniqueID"> attribute; or
Making the <input> element a child of the <label> element
Doing so allows screens readers to announce the field’s <label> when the <input> gets focus. It also enables the <label> as an additional hit area when using the mouse to focus on an <input>, which is especially useful for checkboxes and radio buttons.
We also need to specify the type of input using the <input type=""> attribute. Putting those together, we have a basic form with one text field and two radio buttons.
Part of structuring an accessible form is providing information about the type of data required by the field and providing autocomplete options if available. We do this by adding the autocomplete attribute to form fields asking for personal information.
Below are some common examples of fields asking for personal information and their autocomplete values. Reference the full list of autocomplete values.
First name: given-name
Last name: family-name
Email: email
Username: username
Company: organization
Zip code: postal-code
If autocomplete information is available in the browser, fields with the autocomplete attributes will offer suggestions.
Autocomplete suggestion for an email field in Chrome
Grouping similar fields
Our radio buttons are labeled ‘yes’ and ‘no,’ but what are they for? We need to use the <fieldset> and <legend> elements to provide that semantic meaning. The <fieldset> groups the related form fields while the <legend> provides a name for the grouping. These are most often used for checkboxes and radio buttons but they can be useful for grouping other related fields, e.g. Shipping address.
Since radio button options may have similar names, group like radio buttons with the name="groupName" attribute. Keyboard users move between radio buttons in a group with the arrow keys.
Provide a visible indication of the required fields for sighted users, such as an asterisk. Include text before the form indicating how users can recognize required fields. See Kitty Giraudel’s article The required fault in our stars for a discussion on ways to denote required fields. Research from Baymard suggests e-commerce sites need to mark both required and optional fields.
Then there are two attributes we can use to programmatically define required fields: aria-required="true" and required. Use one (not both) of these attributes to ensure required fields are conveyed appropriately to assistive technology. Screen readers will say required when announcing the form field name, role and state.
The required attribute provides a first layer of form validation on submit. Many modern browsers will not submit a form with empty required fields and will even provide a visible error message.
Required field in Chrome
However, user agent error handling is not dependable as these error messages are not always announced or available to assistive technology; they can’t be styled or resized; and they are not persistent. To disable browser validation testing, include the novalidate attribute in the <form> element.
Verifying data
In addition to marking fields as required for assistive technology, we also have to indicate if the data entered into each field is valid. All required fields should also include the aria-invalid="true" attribute added with JavaScript once the form has been submitted. Remove this attribute once valid data is entered.
We can further enforce data validation in HTML for fields that aren’t necessarily required by using the pattern attribute that accepts a regular expression. Let’s create a field for collecting birthday with a required format of mm/dd/yyyy.
This pattern matching prevents the form from submitting if the data entered does not match the specified pattern.
A form field that fails pattern validation in Chrome
Ensure users of assistive technology are aware of the required pattern by programmatically linking the help text with the form field using the aria-describedby attribute.
inputmode attribute
We can make it easier for people entering the date into the form field on mobile devices by adding the inputmode attribute. This attribute allows us to specify which virtual keyboard is displayed in supported browsers. Since dates are numeric, we can use inputmode="numeric" to display the numbers keyboard which provides fewer options and larger hit areas for each key.
Numeric virtual keyboard on iOS
Note: In my demo, I use JavaScript to add the slash characters to the date automatically as the slash character is not available on the numeric virtual keyboard.
Handling errors
It’s important to provide a list of all errors at the top of the form or provide them in-context of the field in error. We can programmatically link the error message with the form field using the aria-describedby attribute. This is only necessary when an error message provides information that helps the user enter the correct data.
When assistive technology users focus on the email field, the error message is announced along with the name, role and state of the field.
Error messages must be visible, persistent and close to the field in error. Don’t rely on color alone to convey errors. Include an icon with “error” as the text. Move focus to the error messages at the top of the form or to the first field in error on form submit.
A form field in error using JavaScript validation
Conclusion
I hope you found something to make your forms more accessible. I like forms because they have such a strong semantic structure. There are a lot of things to get right but it’s pretty straightforward what “right” means in this context: Make sure anything that is conveyed visually is also conveyed to assistive technology, including the states of form fields.
I’m about to start public speaking at conferences and I wanted to design something I could give away. A sticker seemed like just the thing.
Feel free to DM me on Twitter with your address if you want one. Otherwise, I’m making the artwork available so you can print your own for non-commercial use.