How to create an autocomplete input with only HTML
Over the last few days, we’ve looked at how some awesome ways you can use one line of CSS to replace a bunch of custom JavaScript. Today, we’re going to look at how to create an autocomplete input with only HTML.
The datalist element #
To make this work, start by creating a label and input like you normally would.
<label for="wizards">Who's the best wizard?</label> <input type="text" id="wizards" name="wizards">
Next, create a datalist
element.
In it, add an option
element for each autocomplete choice. Using the example above, we’d create an option
for each wizard.
<label for="wizards">Who's the best wizard?</label> <input type="text" id="wizards" name="wizards"> <datalist> <option>Harry Potter</option> <option>Hermione</option> <option>Dumbledore</option> <option>Merlin</option> <option>Gandalf</option> </datalist>
Finally, we need to associate the datalist
with the input
.
Give the datalist
an ID, and add the list
property to your input
with a value equal to your datalist
ID.
<label for="wizards">Who's the best wizard?</label> <input type="text" id="wizards" name="wizards" list="wizards-list"> <datalist id="wizards-list"> <option>Harry Potter</option> <option>Hermione</option> <option>Dumbledore</option> <option>Merlin</option> <option>Gandalf</option> </datalist>
Now, when the user types, the browser reveals a list of options they can choose from.
Demo.
See the Pen
datalist by Chris Ferdinandi (@cferdinandi)
on CodePen.
Browser Compatibility #
he datalist
element works in all modern browsers, and back to IE10.