Skip to main content

HTML Guide

Bad value “combobox” for attribute “role” on element “input”.

The role attribute value combobox is not valid on an input element according to the W3C HTML standard.

The role="combobox" is valid only when applied to an element that acts as a container for the combo box widget, usually a div or similar element, and not directly to a native HTML input. Native input elements of type "text" or "search" already have implicit roles and accessibility semantics. To create an accessible combobox, wrap the input inside a container element with role="combobox" and use appropriate ARIA attributes.

Incorrect Implementation:

<input type="text" role="combobox" aria-autocomplete="list">

Correct Implementation:

<div role="combobox" aria-haspopup="listbox" aria-owns="suggestions" aria-expanded="false">
  <input type="text" aria-autocomplete="list" aria-controls="suggestions">
</div>
<ul id="suggestions" role="listbox">
  <li role="option" id="option1">Option 1</li>
  <li role="option" id="option2">Option 2</li>
</ul>

Explanation of attributes:

  • role="combobox": Applied to the container (<div>) to define the accessible widget.
  • aria-haspopup="listbox": Indicates the presence of a list of suggestions.
  • aria-owns / aria-controls: Connects the input and suggestion list.
  • aria-expanded: Denotes whether the suggestion list is visible.
  • aria-autocomplete: Defines the autocomplete behavior.

This markup ensures better accessibility and passes W3C validation.

Learn more:

Related W3C validator issues