The Current State of HTML5 Forms

The datalist Element

<input type="text" list="datalist">
<datalist id="datalist">
	<option>First Choice</option>
	<option>Second Choice</option>
	<option>Third Choice</option>
</datalist>

Live Demo

Firefox
4+
Safari
8-
Safari Mobile
8-
Chrome
20+
Opera
9+
IE
10+
Android
4.4.3+
Supported No support No support Supported Supported Supported Supported

Supported Browser Screenshots

Color with datalist range with datalist Time with datalist
Chrome 34

The Low Down

The <datalist> element lets you provide <option>s that are available for selection by another form control.

  • When an input with a list attribute matching the id of your <datalist> element comes into focus, is double clicked or upon data entry, a menu will appear populated by the option provided in the <datalist>.
  • While not officially required, you must include an id for the inputs to reference. One <datalist> can be referenced by an unlimited number of input elements.
  • A datalist must contain zero or more <option> elements. No other children are valid.
  • You might think of an <input> with a linked <datalist> like you would a group of radio buttons with an "Other: _________" choice or a select that also allows for free form data entry. For most input types, it behaves a bit like autocomplete or "suggested" items might. If you type "V" the list will show only items that start with "V" in Chrome, Opera and IE, and any <option> containing "V" in Firefox.
  • If a browser doesn't support <datalist>, it will not show the nested <options>. Generally <options> only display when nested within a <select>. Now, they also display, though differently, when nested in a <datalist> in supporting browsers.
  • For <input type="range">, supporting browsers show tick marks along the slider at each value included as an <option> in the associated <datalist>.
  • For the date input types, supporting browsers show a drop down <option> in the associated <datalist>.
  • Firefox doesn't show the data list drop down on focus, rather you have to double click on the input, otherwise it will show the suggestions upon data entry.
  • In mobile, <datalist> is supported in conjunction with most input types in Blackberry 10, Opera mobile thru v 12.1 (support was removed in 21), Chrome for Android and Firefox for Firefox OS. It is not supported in IE10 mobile.
  • Fallback is just a regular text input. In non-supporting browsers, the <datalist> will not show unless you include a nested <select>, which is a way of falling back, as shown in progressive usage below as demonstrated by Jeremy Keith.