JSFiddle - React, Tailwind, and code Playground
by dswitzer
HTML
<input
list=""
name="option"
id="input"
autocomplete="off"
>
<datalist id="datalist">
<option>Carrots</option>
<option>Peas</option>
<option>Beans</option>
</datalist>
CSS
datalist {
position: absolute;
background-color: lightgrey;
font-family: sans-serif;
font-size: 0.8rem;
}
option {
background-color: #bbb;
padding: 4px;
margin-bottom: 1px;
cursor: pointer;
}
JavaScript
input.onfocus = function () {
datalist.style.display = 'block';
}
input.onblur = function () {
setTimeout(function(){ datalist.style.display = 'none'}, 300);;
}
for (let option of datalist.options) {
option.onclick = function () {
input.value = this.value;
datalist.style.display = 'none';
}
}
datalist.style.width = input.offsetWidth + 'px';
datalist.style.left = input.offsetLeft + 'px';
datalist.style.top = input.offsetTop + input.offsetHeight + 'px';