Editable Combobox without Autocomplete Example
The below combobox that enables users to choose a term from a hypothetical list of previously searched terms demonstrates the
ARIA design pattern for combobox.
The design pattern describes four types of autocomplete behavior.
This example illustrates the autocomplete behavior known as no autocomplete
.
The terms that appear in the listbox popup are not related to the string that is present in the textbox.
In this implementation, the listbox popup is not automatically triggered when the textbox receives focus; the list is opened when the user types a character into the textbox or through an explicit open command.
Similar examples include:
- Select-Only Combobox: A single-select combobox with no text input that is functionally similar to an HTML
select
element. - Editable Combobox with Both List and Inline Autocomplete: An editable combobox that demonstrates the autocomplete behavior known as
list with inline autocomplete
. - Editable Combobox with List Autocomplete: An editable combobox that demonstrates the autocomplete behavior known as
list with manual selection
. - Editable Combobox with Grid Popup: An editable combobox that presents suggestions in a grid, enabling users to navigate descriptive information about each suggestion.
- Date Picker Combobox: An editable date input combobox that opens a dialog containing a calendar grid and buttons for navigating by month and year.
Example
- weather
- salsa recipes
- cheap flights to NY
- dictionary
- baseball scores
- hotels in NY
- mortgage calculator
- restaurants near me
- free games
- gas prices
- classical music
Keyboard Support
The example combobox on this page implements the following keyboard interface. Other variations and options for the keyboard interface are described in the Keyboard Interaction section of the combobox design pattern.
Textbox
Key | Function |
---|---|
Down Arrow |
|
Alt + Down Arrow | Opens the listbox without moving focus or changing selection. |
Up Arrow |
|
Enter |
|
Standard single line text editing keys |
|
Listbox Popup
NOTE: When visual focus is in the listbox, DOM focus remains on the textbox and the value of aria-activedescendant
on the textbox is set to a value that refers to the listbox option that is visually indicated as focused.
Where the following descriptions of keyboard commands mention focus, they are referring to the visual focus indicator.
For more information about this focus management technique, see
Using aria-activedescendant to Manage Focus.
Key | Function |
---|---|
Enter |
|
Escape |
|
Down Arrow |
|
Up Arrow |
|
Right Arrow | Moves visual focus to the textbox and moves the editing cursor one character to the right. |
Left Arrow | Moves visual focus to the textbox and moves the editing cursor one character to the left. |
Home | Moves visual focus to the textbox and places the editing cursor at the beginning of the field. |
End | Moves visual focus to the textbox and places the editing cursor at the end of the field. |
Printable Characters |
|
Button
The button has been removed from the tab sequence of the page, but is still important to assistive technologies for mobile devices that use touch events to open the list of options.
Role, Property, State, and Tabindex Attributes
The example combobox on this page implements the following ARIA roles, states, and properties. Information about other ways of applying ARIA roles, states, and properties is available in the Roles, States, and Properties section of the combobox design pattern.
Textbox
Role | Attribute | Element | Usage |
---|---|---|---|
combobox
|
input[type="text"] |
Identifies the input as a combobox. | |
aria-autocomplete="none"
|
input[type="text"] |
Indicates that the suggestions in the combobox popup are not values that complete the current textbox input. | |
aria-controls="#IDREF"
|
input[type="text"] |
Identifies the element that serves as the popup. | |
aria-expanded="false"
|
input[type="text"] |
Indicates that the popup element is not displayed. | |
aria-expanded="true"
|
input[type="text"] |
Indicates that the popup element is displayed. | |
id="string"
|
input[type="text"] |
|
|
aria-activedescendant="IDREF"
|
input[type="text"] |
|
Listbox Popup
Role | Attribute | Element | Usage |
---|---|---|---|
listbox
|
ul
|
Identifies the ul element as a listbox . |
|
aria-label="Previous Searches"
|
ul |
Provides a label for the listbox . |
|
option
|
li |
|
|
aria-selected="true"
|
li |
|
Button
Role | Attribute | Element | Usage |
---|---|---|---|
tabindex="-1"
|
button |
Removes the button from the tab sequence of the page, since it's keyboard function is redundant with the keyboard operation of the textbox to open the listbox. | |
aria-label="Previous Searches"
|
button |
Provides a label for the button . |
|
aria-controls="#IDREF"
|
button |
Identifies the element that serves as the popup. | |
aria-expanded="false"
|
button |
Indicates that the popup element is not displayed. | |
aria-expanded="true"
|
button |
Indicates that the popup element is displayed. |
Javascript and CSS Source Code
- CSS: combobox-autocomplete.css
- Javascript: combobox-autocomplete.js
HTML Source Code