Live Search Filter
A list filtered live as you type, with a results counter.
Requires Bootstrap 5. Add the CDN tags below to your page (styles in
<head>, scripts before </body>). The downloaded file already includes them.<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"><script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script><div class="card border-0 shadow-sm" style="max-width:340px"><div class="card-body">
<input class="form-control mb-2" id="lsInput" placeholder="Search fruits…">
<ul class="list-group" id="lsList">
<li class="list-group-item py-2">Apple</li><li class="list-group-item py-2">Banana</li><li class="list-group-item py-2">Cherry</li><li class="list-group-item py-2">Grape</li><li class="list-group-item py-2">Mango</li><li class="list-group-item py-2">Orange</li>
</ul>
<small class="text-secondary" id="lsCount">6 results</small>
</div></div>var inp=document.getElementById('lsInput'),items=document.querySelectorAll('#lsList li'),cnt=document.getElementById('lsCount');
inp.addEventListener('input',function(){var q=inp.value.toLowerCase(),n=0;items.forEach(function(li){var m=li.textContent.toLowerCase().indexOf(q)>-1;li.style.display=m?'':'none';if(m)n++});cnt.textContent=n+' results'});Free to use.This component uses Bootstrap 5 (linked above). Copy any file, or download a ready-to-open .html page with the CDN links already included.