Keyboard Accessibility
All content must be operable using the keyboard.
Keyboard-only users and users of assistive technology use the keyboard to navigate all website content and access every interactive element.
All interactive elements must receive keyboard focus in order to be keyboard accessible. Buttons, links, and form controls will automatically receive keyboard focus. However, links will not receive keyboard focus if they do not have a value.
For any other interactive element, a tab index should be added to make the element responsive to keyboard focus.
Operability
Buttons, links, and form controls
All buttons, links, and form controls should be operable using the keyboard by default. This can be overridden by the use of certain scripts and HTML attributes if necessary, but that step is taken on a case-by-case basis.
onclick effect
When applied to an HTML element, the “onclick” attribute can be used to activate JavaScript and other forms of interactivity. Clicking the assigned element triggers “onclick,” which is operable using the keyboard with most browsers and assistive technology.
onmouseover and onfocus effects
When applied to an HTML element, the “onmouseover” attribute can be used to activate JavaScript and other forms of interactivity. Users can activate “onmouseover” by hovering over the assigned “onclick” element, but “onmouseover” is not operable using the keyboard.
Instead, the “onfocus” attribute provides equivalent functionality by activating the effect when the interactive element receives keyboard focus.
Equivalency
Making some functions, such as a drag-and-drop system, keyboard accessible isn’t practical or possible.
In these situations, equivalent functionality must be provided for keyboard-only users. They may be unable to drag and drop content elements, but as long as they can reorder the elements through other means, the function is considered keyboard accessible.
Traps
A keyboard trap occurs when a user tabs to an interactive element, frame, etc, but cannot move on to the next element and/or return to an earlier element. Keyboard interactions should never be trapped, and any apparent traps should be remedied immediately.