Techniques for WCAG 2.0

On this page:

-

# F59: Failure of Success Criterion 4.1.2 due to using script to make div or span a user interface control in HTML

## Applicability

HTML and XHTML with scripting

This failure relates to:

- Success Criterion 4.1.2 (Name, Role, Value)
  - How to Meet 4.1.2 (Name, Role, Value)
  - Understanding Success Criterion 4.1.2 (Name, Role, Value)

## Description

This failure demonstrates how using generic HTML elements to create user interface controls can make the controls inaccessible to assistive technology. Assistive technologies rely on knowledge of the role and current state of a component in order to provide that information to the user. Many HTML elements have well defined roles, such as links, buttons, text fields, etc. Generic elements such as `div` and `span` do not have any predefined roles. When these generic elements are used to create user interface controls in HTML the assistive technology may not have the necessary information to describe and interact with the control.

See the resources section below for links to specifications which describe mechanisms to provide the necessary role and state information to create fully accessible user interface controls.

## Examples

### Example 1

The following example fails because it creates a checkbox using a span and an image.

Example Code:

      <p>
      <span  onclick="toggleCheckbox('chkbox')">
      <img src="unchecked.gif"  id="chkbox" alt=""> Include Signature
      </span>
      </p>

### Example 2

Here is the scripting code which changes the image source when the `span` is clicked with the mouse.

Example Code:

      var CHECKED = "check.gif";
      var UNCHECKED = "unchecked.gif";
      function toggleCheckbox(imgId) {
      var theImg = document.getElementById(imgId);
      if ( theImg.src.lastIndexOf(CHECKED)!= -1 ) {
      theImg.src = UNCHECKED;
      // additional code to implement unchecked action
      }
      else {
      theImg.src = CHECKED;
      // additional code to implement checked action
      }
      }

A checkbox created in this manner will not work with assistive technology since there is no information that identifies it as a checkbox. In addition, this example is also not operable from the keyboard and would fail guideline 2.1.

## Resources

Resources are for information purposes only, no endorsement implied.

- Dynamic Accessible Web Content Roadmap

- Accessible DHTML

## Related Techniques

- F42: Failure of Success Criterion 1.3.1 and 2.1.1 due to using scripting events to emulate links in a way that is not programmatically determinable

## Tests

### Procedure

1. Examine the source code for elements which have event handlers assigned within the markup or via scripting.

2. If those elements are acting as user interface controls, check that the role of the control is defined.

### Expected Results

If check #2 is false and the created user interface control does not have role information, this failure condition applies.

- Top
- Contents
- Intro
- Previous: Failure F58
- Next: Failure F60