AutoComplete Accessibility
The AutoComplete is accessible by screen readers and provides WAI-ARIA, Section 508, WCAG 2.1, and keyboard support.
The Accessibility is part of Telerik UI for ASP.NET Core, a
professional grade UI library with 110+ components for building modern and feature-rich applications. To try it out sign up for a free 30-day trial.
According to WAI-ARIA 1.1 specification "Authors must ensure an element with role combobox contains or owns a text input element with role textbox or searchbox...". Note, that in our implementation, the text input element is the one that has role="combobox", and does not contain another text input element. This approach is valid for the WAI-ARIA 1.2 specification and also for the WAI-ARIA 1.0 specification .
As it is stated in WAI-ARIA 1.2 "The Guidance for combobox has changed significantly in ARIA 1.2 due to problems with implementation of the previous patterns". Therefore, we will keep the current state, even if it contradicts the WAI-ARIA 1.1 specification.
For more information, refer to:
Out of the box, the Kendo UI for jQuery AutoComplete provides extensive accessibility support and enables users with disabilities to acquire complete control over its features.
The AutoComplete is compliant with the Web Content Accessibility Guidelines (WCAG) 2.2 AA standards](https://www.w3.org/TR/WCAG22/) and Section 508 requirements, follows the Web Accessibility Initiative - Accessible Rich Internet Applications (WAI-ARIA) best practices for implementing the keyboard navigation for its component
role, provides options for managing its focus and is tested against the most popular screen readers.
WAI-ARIA
This section lists the selectors, attributes, and behavior patterns supported by the component and its composite elements, if any.
AutoComplete Wrapping Element
The following table summarizes the selectors and attributes supported by the AutoComplete wrapper element:
Selector | Attribute | Usage |
---|---|---|
.k-input-inner |
role=combobox |
Announces the presence of an AutoComplete as the inner element of the AutoComplete that is used for filtering. |
label for or aria-label or aria-labelledby
|
The input needs an accessible name that will be assigned to it. | |
aria-haspopup=listbox |
Indicates that the component has a listbox popup. | |
aria-expanded=true/false |
Announces the state of the popup visibility. | |
aria-controls=.k-list-ul id |
Points to the listbox element. Signifies that the combobox element controls the listbox one. |
|
aria-activedescendant=.k-list-item.k-focus id |
Points to the focused item in the popup. The focused item is changed with keyboard navigation. If the popup is not visible, the attribute must not point to any element or must be removed. | |
aria-autocomplete=list |
The attribute is rendered and the value is set to list when the filtering feature is enabled. |
|
aria-autocomplete=both |
The attribute is rendered and the value is set to both when both the filtering and suggest features are enabled. |
|
aria-autocomplete=inline |
The attribute is rendered and the value is set to only when the suggest feature is enabled. |
|
readonly or aria-readonly
|
The attribute is rendered only when the AutoComplete is read-only. | |
aria-busy=true |
The attribute is rendered only when the AutoComplete is loading data. | |
tabindex=0 |
The element must be focusable. | |
.k-invalid .k-input-inner,.ng-invalid .k-input-inner |
aria-invalid=true |
The attribute is rendered only when the AutoComplete is in a form and announces the valid state of the component. |
.k-disabled .k-input-inner |
disabled=disabled or aria-disabled=true
|
The attribute is rendered only when the AutoComplete is disabled. |
Popup Listbox
The popup element of the AutoComplete has to implement the WAI-ARIA specification for a Popup List component. The following table summarizes the selectors and attributes supported by the listbox popup of the AutoComplete:
Selector | Attribute | Usage |
---|---|---|
.k-animation-container |
role=region |
When the component container is appended to the <body> element of the document, it requires you to assing a landmark role to it. Otherwise, append it to an element with an appropriate landmark role. |
aria-label or aria-labelledby
|
When the container has a region role assigned, povides a label. |
|
.k-list-ul |
role=listbox |
Identifies the ul element as a listbox. |
aria-label or aria-labelledby
|
Provides a label for the listbox of the ComboBox. | |
.k-list-item |
role=option |
Identifies the li element as a listbox option. |
id |
When grouped, the list items must have an id attribute specified, so that the aria-owns attribute of their group header elements (with role=group ) point to that ids. |
|
aria-describedby |
When grouped, the list items must have an aria-describedby attribute pointing to the id of the k-list-item-text element in their k-list-group-item . |
|
.k-list-item.k-selected |
aria-selected=true |
Indicates the selected state of the item. |
.k-list-group-item |
role=group |
The group elements in the popup list must be have role=group . |
aria-owns |
The group elements in the popup list must own the list items belonging to their group. | |
.k-list-group-item>.k-list-item-text |
id |
The k-list-item-text elements of the k-list-group-item must have an id specified. The aria-labelledby attribute of the list items in the group must point to that id. |
Resources
WAI-ARIA Authoring Practices: Editable Combobox With Both List and Inline Autocomplete Example
WAI-ARIA Authoring Practices: Editable Combobox With List Autocomplete Example
Section 508
The AutoComplete is fully compliant with the Section 508 requirements.
Testing
The AutoComplete has been extensively tested automatically with axe-core and manually with the most popular screen readers.
To report any accessibility issues, contact the team through the Telerik Support System.
Screen Readers
The AutoComplete has been tested with the following screen readers and browsers combinations:
Environment | Tool |
---|---|
Firefox | NVDA |
Chrome | JAWS |
Microsoft Edge | JAWS |
Automated Testing
The AutoComplete has been tested with axe-core.