Manager checklist

Level A checklist

General Principles

JS_G_A1:

Does all dynamic visual information have a text equivalent (e.g. a visual progress-meter also shows a % figure)?

JS_G_A2:

Does any JavaScript functionality that can’t be made accessible have a long description that provides the same information (e.g. a graphical route-map is supplemented with a text description of the route)?

JS_G_A3:

If any JavaScript functionality can’t be presented in text, is it described and identified as such?

JS_G_A4:

Is all functionality which relies on JavaScript hidden when JavaScript is unavailable?

JS_G_A5:

Does all interactive content have an associated label or short instructions about its behaviour?

JS_G_A6:

Is all JavaScript-generated content added using functions of the DOM, rather than using document.write or innerHTML?

JS_G_A7:

Is everything that looks and functions like a link, actually a link, not just a JavaScript simulation?

JS_G_A8:

Is there a mechanism for bypassing repeating blocks of content (e.g. site navigation has a button to expand and collapse it or a skip link)?

Interactive Content

JS_C_A1:

Is all interactive content accessible to the keyboard, using common keystrokes like ‘Tab’, ‘Enter’ and the Arrow Keys?

JS_C_A2:

Is the click event used as the main activation event for on-demand functionality?

JS_C_A3:

Is all mouse-controlled functionality also accessible to the keyboard, either by direct keyboard access to the same functionality, or by an alternative keyboard mechanism that achieves the same end-result?

JS_C_A4:

Are all links, buttons and form fields accessible to the keyboard, and have visual indication when they’re focused?

JS_C_A5:

If a time-limit is in use, is the user warned when the limit is about to expire, and provided with a mechanism for extending it?

JS_C_A6:

Does automatically-scrolling content have a mechanism to pause it?

JS_C_A7:

Does automatically-scrolling content provide an alternative static version?

JS_C_A8:

Does all blinking or flashing animation stop with 5 seconds?

JS_C_A9:

When content is dynamically inserted into the DOM, is it next in the tab-order (i.e. directly after the element that triggered it, or which has the current focus)?

JS_C_A10:

If custom dialogs are used (e.g. an image lightbox), can they be activated and closed again with only the keyboard, and are they inserted into the DOM directly after their triggering element?

JS_C_A11:

If drag-and-drop is used, is it keyboard accessible, or is there a keyboard-based means of achieving the same end-result?

JS_C_A12:

If custom dialogs are used (e.g. an image lightbox), are they triggered only by user request, using links that still function as normal links when JavaScript is unavailable?

Menus and Navigation

JS_N_A1:

If a dynamic menu is used, is it fully accessible to the keyboard using ‘Tab’ and/or Arrow Keys?

JS_N_A2:

If new windows are opened, are they triggered only by activation events (i.e. selecting a link), not by focus or load events?

JS_N_A3:

If new windows are opened, are they triggered only by user request, using links that still function as normal links when JavaScript is unavailable?

JS_N_A4:

If a SELECT element is used for navigation, does it have a separate “Go” button that must be selected to load the new page, rather than loading as soon as an option is selected?

JS_N_A5:

If automatic page redirections are used, are they implemented only with server-side scripting?

JS_N_A6:

If automatic page refreshes are used, is a mechanism provided that gives the user control over this, and defaults to not refreshing at all?

Form Validation

JS_F_A1:

Is form validation triggered by submission of the form, not by individual field events?

JS_F_A2:

Is form submission bound to the form’s submit event, not to the submit button’s click event?

JS_F_A3:

Does form validation trigger an alert and then set focus on the first invalid field?

JS_F_A4:

Are validation error messages inserted into the DOM directly after the field they relate to?

JS_F_A5:

Is it possible to ‘Tab’ freely around a form without the focus being forced into invalid fields?

Level AA checklist

Form Validation

JS_F_AA1:

If form fields require a specific format or range of values, is contextual help-text available, either as help messages inserted into the DOM directly after the field they relate to or as default information in the field’s LABEL or title attribute?