前端实现模糊搜索功能

一、前言

最近在项目中遇到的业务需求,页面创建时把所有数据都加载了,这种情况下,使用后端SQL语句进行模糊,有点浪费时间,决定使用前端的输入框 + 按钮实现对数据的模糊搜索

二、HTML

<div class="input-group">
    <input type="text" placeholder="搜索子项业务" class="input input-sm form-control"
           id="zxyw">
    <span class="input-group-btn" onclick="searchEvent()">
        <button type="button" class="btn btn-sm btn-white"> <i
                class="fa fa-search"></i> 搜索</button>
    </span>
</div>
<div style="height: 285px;overflow: auto;" id="matterTop">
    <ul id="mmatterInfo_data" class="sortable-list connectList agile-list">
        <li class="warning-element" th:each="smatter : ${smlist}"
            th:id="${smatter.id}">
            <h3 class="text--warning"><span th:text="${smatterStat.count}"/>
                <span th:text="${smatter.sname}"/>
            </h3>
            ……省略
        </li>
    </ul>
</div>

三、实现代码

    function searchEvent() {
        //获取input输入信息
        var zxyw = document.getElementById("zxyw").value;
        //获取ul
        var matter = document.querySelector("#mmatterInfo_data");
        //虎丘ul下所有li
        var lis = matter.querySelectorAll(".warning-element");
        for (let i = 0; i < lis.length; i++) {
            //li中的名称
            var name = lis[i].innerText;
            //判断是否匹配,如果不匹配,则隐藏
            if ("" != zxyw && name.indexOf(zxyw) < 0) {
                lis[i].style.display = 'none';
            } else {
                lis[i].style.display = '';
            }
        }
        //返回顶部(这里用到了滚动条,每次搜索后返回顶部)
        document.getElementById("matterTop").scrollTop = 0;
    }

四、实现效果

 

  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的前端实现模糊搜索功能的代码实现HTML: ``` <input type="text" id="searchInput" placeholder="Search..."> <ul id="results"></ul> ``` JavaScript: ``` const searchInput = document.getElementById('searchInput'); const resultsList = document.getElementById('results'); searchInput.addEventListener('input', function() { const searchTerm = searchInput.value.toLowerCase(); resultsList.innerHTML = ''; if (searchTerm.length < 3) { return; } const filteredResults = data.filter(function(item) { return item.name.toLowerCase().includes(searchTerm); }); filteredResults.forEach(function(item) { const li = document.createElement('li'); li.textContent = item.name; resultsList.appendChild(li); }); }); const data = [ { name: 'Apple' }, { name: 'Banana' }, { name: 'Cherry' }, { name: 'Durian' }, { name: 'Elderberry' }, { name: 'Fig' }, { name: 'Grape' }, { name: 'Honeydew' }, { name: 'Iced Tea' }, { name: 'Jicama' }, { name: 'Kiwi' }, { name: 'Lemon' }, { name: 'Mango' }, { name: 'Nectarine' }, { name: 'Orange' }, { name: 'Pineapple' }, { name: 'Quince' }, { name: 'Raspberry' }, { name: 'Strawberry' }, { name: 'Tangerine' }, { name: 'Ugli Fruit' }, { name: 'Vanilla Bean' }, { name: 'Watermelon' }, { name: 'Xigua' }, { name: 'Yellow Squash' }, { name: 'Zucchini' } ]; ``` 这段代码监听输入框的输入事件,当输入框中的文本发生变化时,会根据输入的文本进行模糊搜索。如果输入的文本长度小于3,则不进行搜索。搜索结果会显示在一个无序列表中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值