Let us assume, I have a list of birds stored in an array. I want to search for birds using a character or two. It’s like a look-up, similar to an AutoComplete feature.
🚀 Related example: How to convert JSON to an HTML table dynamically using JavaScript?
<!DOCTYPE html>
<html>
<head>
<title>AutoComplete feature using JSON and JavaScript includes() Method</title>
<style>
ul {
list-style: none;
padding: 0px;
margin: 10px 0;
}
input, div, ul {
font-size: 18px;
}
</style>
</head>
<body>
<input id="tbFind" placeholder='Enter search term' onkeyup="find(this.value)" />
<div id="list"></div>
</body>
<script>
// JSON array.
const birds = ['Eurasian Collared-Dove', 'Bald Eagle',
'Coopers Hawk', 'Mourning Dove', 'Bells Sparrow',
'Rock Pigeon', 'Aberts Towhee', 'Brewers Sparrow',
'Canyon Towhee', 'Black Vulture', 'Gila Woodpecker'];
let find = (term) => {
document.getElementById('list').innerHTML = '';
if (term != '') {
const ul = document.createElement('ul');
for (let i = 0; i < birds.length; i++) {
if (birds[i].includes(term)) {
let li = document.createElement('li');
ul.appendChild(li);
li.innerHTML = birds[i];
li.setAttribute('onclick', 'showValue(this)'); // ATTACH AN EVENT.
}
}
document.getElementById('list').appendChild(ul);
}
else {
document.getElementById('list').innerHTML = '';
}
}
const showValue = (ele) => {
let t = document.getElementById('tbFind');
t.value = ele.innerHTML;
document.getElementById('list').innerHTML = '';
}
</script>
</html>