Legacy ARIA 1.0 Combobox without Autocomplete Example

NOTE: This page is work in progress. Please provide feedback in issue 99.

The below combobox that enables users to choose a term from a hypothetical list of previously searched terms demonstrates the ARIA 1.0 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; it is displayed only when the user opens it.

Similar examples include:

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 Opens the listbox and moves focus to the first suggested value.
Up Arrow Opens the listbox and moves focus to the last suggested value.
Escape if open, closes the listbox.
  • Standard single line text editing keys
    • Keys used for cursor movement and text manipulation, such as Delete and Shift + Right Arrow.
    • Note: An HTML input with type=text is used for the textbox so the browser will provide platform-specific 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
    • Sets the textbox value to the content of the focused option in the listbox.
    • Closes the listbox.
    • Sets focus on the textbox.
    Escape Closes the listbox and sets focus on the textbox.
    Down Arrow
    • Moves focus to the next option.
    • If focus is on the last option, the focus does not move.
    Up Arrow
    • Moves focus to the previous option.
    • If focus is on the first option, the focus does not move.
    Right Arrow
    • Returns focus to the textbox without closing the listbox.
    • Moves the input cursor one character to the right. If the input cursor is on the right-most character, the cursor does not move.
    Left Arrow
    • Returns focus to the textbox without closing the listbox.
    • Moves the input cursor one character to the left. If the input cursor is on the left-most character, the cursor does not move.
    Home Moves focus to the first option.
    End Moves focus to the last option.
    Printable Characters Returns focus to the textbox without closing the popup and types the character.
    Standard Editing Keys
    e.g., Delete
    • Return focus to the textbox without closing the popup.
    • Executes the platform-specific function for the key.

    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.
    • Note: The primary difference between the ARIA 1.0 pattern and the ARIA 1.1 pattern is the placement of the combobox role.
    aria-autocomplete=none input[type="text"] Indicates that the suggestions in the combobox popup are not values that complete the current textbox input.
    aria-haspopup=true input[type="text"] Indicates that the combobox can popup another element to suggest values.
    aria-owns=#IDREF input[type="text"]
    • Identifies the element that serves as the popup.
    • Note: In the ARIA 1.1 combobox pattern, the combobox uses aria-controls instead of aria-owns.
    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.
    aria-activedescendant=IDREF input[type="text"]
    • When an option in the listbox is visually indicated as having keyboard focus, refers to that option.
    • When navigation keys, such as Down Arrow, are pressed, the JavaScript changes the value.
    • Enables assistive technologies to know which element the application regards as focused while DOM focus remains on the input element.
    • For more information about this focus management technique, see Using aria-activedescendant to Manage Focus.

    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
    • Identifies the element as a listbox option.
    • The text content of the element provides the accessible name of the option.
    aria-selected=true li
    • Specified on an option in the listbox when it is visually highlighted as selected.
    • Occurs only when an option in the list is referenced by aria-activedescendant.

    Javascript and CSS Source Code

    HTML Source Code