尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
前端实战:jQuery 输入框防抖模糊搜索(定时器防抖+filter筛选)
一、前言在日常项目和后台管理系统中顶部搜索框实时搜索是非常高频的功能。如果直接监听输入框的 input 事件用户每敲一个字就会执行一次搜索、渲染一次列表会造成严重的页面卡顿、性能浪费。为了解决这个问题前端引入了防抖debounce思想用户连续输入时不触发搜索停止输入指定时间后再执行一次搜索。本文就用你课堂原版代码带大家彻底搞懂 jQuery 定时器防抖 前端模糊搜索 的完整逻辑。二、最终完整可运行代码包含 HTML 结构、jQuery 防抖逻辑、filter 模糊筛选、搜索提示、分页渲染和你写的代码完全一致仅补全结构可直接运行。jQuery 防抖搜索实战!-- 搜索结构 -- div classsearch_item label分类标题/label input placeholder请输入 idtitleb /div script let listData [] // 搜索数据源 let currentEditId // 定时器标识 // 监听输入框输入事件 $(#titleb).on(input, function () { // 当输入框改变时消除上一次的计时 clearTimeout(currentEditId); // 添加定时器防止频繁触发搜索 currentEditId setTimeout(function () { fieldofsearch() // 执行搜索函数 }, 2000); // 停止输入2秒后搜索 }) // 搜索执行函数 function fieldofsearch() { // 1. 获取输入框的值并去除首尾空格 let data $(#titleb).val().trim(); // 2. 筛选数据匹配标题包含输入关键词的项模糊搜索 let Filterpackage listData.filter(item item.title.includes(data)) // 3. 搜索结果提示 Filterpackage.length ? Toast.showSuccess(搜索成功) : Toast.showError(无搜索结果); // 4. 重新渲染分页和列表 initPagination(Filterpackage) } // 模拟分页渲染函数 function initPagination(arr){ console.log(筛选后的列表数据, arr) // 此处可编写渲染表格、渲染分页逻辑 } // 模拟全局提示弹窗适配原代码Toast const Toast { showSuccess:(msg)console.log(成功,msg), showError:(msg)console.log(失败,msg) } /script三、逐行代码详细解析 1. 全局变量作用 let listData []//搜索数据 let currentEditId // 存储定时器ID - listData全局存放所有原始列表数据所有筛选都基于这份原始数据保证筛选不会丢失原始内容。 - currentEditId用来接收定时器返回值用于清除上一次的延时任务是防抖核心变量。 2. 输入框监听防抖核心逻辑 $(#titleb).on(input, function () {//设置监听函数监听input clearTimeout(currentEditId);//当输入框改变时消除上一次的计时 currentEditId setTimeout(function () {//添加定时器防止连续点击 fieldofsearch()//当停止输入2秒后执行搜索 },2000);//两秒后搜索 }) 防抖原理重点 1. 用户每输入一个字符就会触发 input 事件 2. 每次触发都会 清除上一次未执行的定时器 3. 只要用户一直在打字定时器就会一直被清除搜索永远不会执行 4. 用户停止输入2秒后定时器不会被清除才会执行一次搜索。 完美解决了「输入频繁触发搜索」的性能问题。 3. 搜索核心函数 fieldofsearch() function fieldofsearch() {//搜索执行函数 // 第一步获取输入框的值并去空格 let data $(#titleb).val().trim(); // 第二步filter 筛选模糊匹配数据 let Filterpackage listData.filter(item item.title.includes(data)) // 第三步判断搜索结果并提示 Filterpackage.length ? Toast.showSuccess(搜索成功) : Toast.showError(无搜索结果); // 第四步重新渲染分页 initPagination(Filterpackage) } 核心方法讲解 - .trim()去除输入内容首尾空格防止用户输入空空格导致无效搜索。 - Array.filter()遍历数组返回符合条件的新数组不会修改原数据。 - includes()模糊搜索核心只要标题中包含输入的关键词就匹配成功。 - 三元表达式判断筛选后的数组长度有数据提示成功无数据提示无结果。 四、核心知识点总结 1. 什么是防抖 防抖高频触发的事件在停止触发一段时间后只执行最后一次。 本案例场景输入框高频输入停止2秒才搜索极大优化浏览器性能。 2. input 事件 和 change 事件区别 - input实时触发每输入/删除字符都会触发适合搜索框。 - change失去焦点、回车才触发不适合实时搜索。 3. 前端模糊搜索原理 数组.filter() 字符串.includes() 遍历所有数据判断标题是否包含用户输入的关键字包含则保留实现模糊匹配。 五、代码优化建议拓展加分 原代码2秒延迟偏长项目中一般使用 500ms体验更好 // 改为 500毫秒防抖 setTimeout(function () { fieldofsearch() },500); 增加空输入还原全部数据逻辑 if(!data){ initPagination(listData) // 输入为空展示全部数据 return } 六、结语 本篇代码是前端非常经典的 输入框防抖 本地模糊搜索 案例几乎所有后台管理系统都会用到。 核心记住三点 1. clearTimeout setTimeout 实现防抖 2. filter includes 实现模糊搜索 3. 防抖可以有效解决前端高频事件的性能问题
RELATED

相关推荐

Go 金融系统的分布式对账和资金安全的工程保障

Go 金融系统的分布式对账和资金安全的工程保障

Go 金融系统的分布式对账和资金安全的工程保障 一、"账上少了 2 分钱"——对账系统最怕的不是大额差异,而是小额累积 金融系统的核心铁律是:钱不能少,账不能错。所有的分布式事务、分布式锁、消息队列最终都要服务于这个目标。 …

📅 2026/8/22 18:28:44
蓝速 AI 双屏翻译机:双模续航打破跨境沟通壁垒

蓝速 AI 双屏翻译机:双模续航打破跨境沟通壁垒

摘要: 本文深度评测蓝速 AI 双屏翻译机如何通过创新的双模供电架构与一体双面屏设计,系统性解决外贸业务中移动巡厂、桌面谈判等全场景沟通痛点。文章结合真实场景实测,展示了该设备在续航、交互、稳定性及工艺上的突破,剖析其如何…

📅 2026/8/22 18:30:20
关于十年后就业的随想

关于十年后就业的随想

在 AI 技术指数级演进的大背景下,未来十年 IT 产业或将迎来大规模就业结构调整,众多中初级程序员会被行业淘汰。全新的研发生产模式将应运而生:依托具备深厚实战项目积淀的高级技术人才,辅以多智能体协同完成全流程开发工作。届时…

📅 2026/8/22 18:30:20
MORE NEWS

更多资讯

📰

数字政府政务中心智慧大厅管理系统设计方案:案以“管理+服务”为理念、“软件+硬件+数据+运维+宣传”一体化智慧化建设方案

该方案是一套面向数字政府政务大厅的“软件硬件数据运维宣传”一体化智慧化建设方案,核心目标是依托互联网、云计算、人工智能、大数据等技术,打造现代化智慧政务大厅,提升群众办事体验和政务管理效率。 该方案以“管理服务”为理念&#xf…

📰

AIGC、RAG、Agent、Function Call、MCP 到底啥关系?这次用 TaoToken 让 Codex 走通一遍示例

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

微信小程序端人脸识别图书馆座位预约签到系统设计

简介:基于人脸识别的图书馆座位预约系统微信小程序端,是一份面向小程序开发者与高校学生的完整项目源码资源。系统结合微信小程序轻量化界面与人脸识别验证,实现座位实时查看、在线预约、入馆自动核验与取消释放等核心流程,适合用…

📰

JuiceFS 目录用量统计(Dir Stats)实战指南:启用、查看与修复

JuiceFS 目录用量统计(Dir Stats)实战指南:启用、查看与修复 【免费下载链接】juicefs JuiceFS is a distributed POSIX file system built on top of Redis and S3. 项目地址: https://gitcode.com/GitHub_Trending/ju/juicefs Juice…

📰

基于YOLOv8的无人机农田重金属污染监测系统构建实战

简介:面向计算机视觉与目标检测方向的毕业设计场景,这份基于YOLOv8的农田土壤重金属污染区域无人机监测系统提供了完整可运行的工程方案。项目包含训练代码、推理脚本、可视化界面及配套数据集,可一键启动无人机航拍影像的污染区域识别&#…

📰

深度学习驱动的舌苔识别检测系统设计与实现

简介:一套基于深度学习的舌苔识别检测鉴定系统完整项目,适合计算机视觉方向毕业设计、课程实践或工程入门。资料内含可运行Python源码、带GUI交互界面、已训练模型权重、论文报告与运行截图,覆盖从数据预处理、模型训练到界面部署的主要流程&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬