ComboBox

The ComboBox component allows you to select an option from a list or input your own custom value.

Accessibility Support

Out of the box, the Telerik and Kendo UI ComboBox provides extensive accessibility support and enables users with disabilities to acquire complete control over its features.

The ComboBox is compliant with the Web Content Accessibility Guidelines (WCAG) 2.2 standards 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.

ComboBox Wrapping Element

The following table summarizes the selectors and attributes supported by the ComboBox wrapper element:

SelectorAttributeUsage
.k-input-innerrole=comboboxAnnounces the presence of a combobox as an inner element of the combobox used for filtering.
label for or aria-label or aria-labelledbyThe input requires an accessible name that will be assigned to it.
aria-haspopup=listboxIndicates that the component has a listbox popup.
aria-expanded=true/falseAnnounces the visibility state of the popup.
aria-controls=.k-list-ul idPoints to the listbox element. Signifies that the combobox controls the listbox element.
aria-activedescendant=.k-list-item.k-focus idPoints to the focused item in the popup. The focused item is changed through keyboard navigation. If the popup is not visible, the attribute must not point to any element or must be removed.
aria-autocomplete=listWhen filtering is enabled, the attribute is rendered and the value is set to list.
aria-autocomplete=bothWhen both the filtering and the suggest featutres are enabled, the attribute is rendered and the value is set to both.
aria-autocomplete=inlineWhen the suggest feature is enabled, the attribute is rendered and the value is set to inline.
readonly=readonly or aria-readonly=trueThe attribute is rendered only when the ComboBox is read-only.
aria-busy=trueThe attribute is rendered only when the ComboBox is loading data.
tabindex=0The element must be focusable.
.k-invalid .k-input-inner,.ng-invalid .k-input-inneraria-invalid=trueThe attribute is rendered only when the ComboBox is in a form, and announces the valid state of the component.
.k-disabled .k-input-innerdisabled=disabled or aria-disabled=trueThe attribute is rendered only when the ComboBox is disabled.
.k-input-buttonrole=button or nodeName=buttonThe element must either be a <button> element or must have the role="button" assigned.
aria-labelThe button element must have discernible text.
tabindex=-1The button element must not be focusable.

Popup Listbox

The popup element of the ComboBox 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 ComboBox:

SelectorAttributeUsage
.k-animation-containerrole=regionWhen 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-labelledbyWhen the container has a region role assigned, povides a label.
.k-list-ulrole=listboxIdentifies the ul element as a listbox.
aria-label or aria-labelledbyProvides a label for the listbox of the ComboBox.
.k-list-itemrole=optionIdentifies the li element as a listbox option.
idWhen 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-describedbyWhen 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-selectedaria-selected=trueIndicates the selected state of the item.
.k-list-group-itemrole=groupThe group elements in the popup list must be have role=group.
aria-ownsThe group elements in the popup list must own the list items belonging to their group.
.k-list-group-item>.k-list-item-textidThe 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.

Keyboard Shortcuts

This section lists the keyboard shortcuts supported by the ComboBox composite elements.

ComboBox Wrapping Element

The following table summarizes the keyboard combinations and input behavior supported by the ComboBox wrapper element:

ShortcutBehavior
Typing in the inputFocuses the matched item.
Down ArrowHighlights the next available item.
Up ArrowHighlights the previous available item.
EnterSelects the focused item.
Alt (or Opt on Mac) + DownOpens the popup.
Alt (or Opt on Mac) + Up or EscCloses the popup.
EscIf the popup is not visible, clears the value.

Listbox Popup

The popup element of the ComboBox has to implement the keyboard navigation specification for a Popup List component.

ShortcutBehavior
Down ArrowMoves the focus to the next item.
Up ArrowMoves the focus to the previous item.
Alt (or Opt on Mac) + Up Arrow or EscCloses the popup.
HomeMoves the focus to the first item. Applicable only when the currently focused element is not an input. When an input is the focused element, the Home and End keys are used for the cursor position.
EndMoves the focus to the last item. Applicable only when the currently focused element is not an input. When an input is the focused element, the Home and End keys are used for the cursor position.
EnterSelects the item.
Page UpScrolls the popup list up.
Page DownScrolls the popup list down.
TabCloses the popup and focuses the next focusable element.

Testing

The ComboBox has been extensively tested automatically with axe-core and manually with the most popular screen readers.

Screen Readers

The ComboBox has been tested with the following screen readers and browsers combinations:

EnvironmentTool
FirefoxNVDA
ChromeJAWS
Microsoft EdgeJAWS

Resources