news 2026/7/21 17:35:15

前端实战:jQuery 多条件联合搜索(标题模糊查询 + 日历时间段筛选)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端实战:jQuery 多条件联合搜索(标题模糊查询 + 日历时间段筛选)

一、项目背景与需求
在后台管理系统列表页面中,单一搜索已经无法满足业务需求,实际开发中几乎都是多条件联合筛选。
本次实战实现的功能:

  • 标题模糊搜索:输入关键词实时匹配列表标题;
  • 日历时间段筛选:选择开始时间、结束时间,筛选指定区间内的数据;
  • 双条件同时生效:标题 + 时间同时匹配;
  • 防抖优化:避免输入频繁触发搜索,提升页面性能;
  • 智能提示:搜索成功/无结果对应弹窗提示,空条件不弹窗;
  • 筛选后重载分页:根据筛选结果重新渲染列表。
    二、页面结构 HTML(日历搜索组件)
    包含自定义日历弹窗结构、隐藏域存时间、搜索展示文本,是典型的后台时间段筛选布局:
开始时间 ~ 结束时间📅
结构讲解 - 隐藏 input 框(startTime / endTime):不展示在页面,专门用来存储用户选择的时间,作为筛选条件; - date_input_box:展示用户已选的时间范围,默认显示占位文字; - calendar_popup:双层日历容器,实现左右双日历选择时间段。 三、核心 JS 逻辑(多条件防抖搜索) 实现:输入标题触发防抖搜索、选择时间后联动搜索、标题+时间双重匹配筛选。 // 全局数据源、定时器变量 let listData = [] // 所有原始列表数据 let currentEditId // 防抖定时器ID

// 1. 标题输入框监听,触发搜索
$(‘#titleb’).on(‘input’, function () {
doSearch();
});

// 2. 核心统一搜索函数(多条件联合筛选)
function doSearch() {
// 清除上一次定时器,实现防抖
clearTimeout(currentEditId);

// 延迟900ms执行搜索,防止频繁触发 currentEditId = setTimeout(function () { // ========== 1. 获取所有搜索条件 ========== // 标题关键词 let title = $('#titleb').val().trim(); // 时间段 let startTime = $('#startTime').val().trim(); let endTime = $('#endTime').val().trim(); // ========== 2. 多条件筛选数据 ========== let result = listData.filter(function (item) { // 条件1:标题模糊匹配 let titleMatch = item.title.includes(title); // 条件2:时间匹配(默认放行,不选时间则不限制) let timeMatch = true; // 只有开始时间和结束时间都存在,才进行时间区间筛选 if (startTime && endTime) { let itemTime = item.createtime; // 判断数据时间是否在选择的区间内 timeMatch = itemTime >= startTime && itemTime <= endTime; } // 两个条件同时满足才算匹配成功 return titleMatch && timeMatch; }); // ========== 3. 搜索结果提示 ========== if (result.length === 0) { // 无匹配数据 Toast.showError('没有搜索结果'); } else { // 有搜索条件且匹配成功,弹出成功提示 if (title || startTime || endTime) { Toast.showSuccess('搜索成功'); } } // ========== 4. 重新渲染分页和列表 ========== initPagination(result); }, 900);

}

// 模拟提示框、分页渲染函数
const Toast = {
showSuccess: (msg) => console.log(“成功:” + msg),
showError: (msg) => console.log(“失败:” + msg)
}
function initPagination(arr) {
console.log(“最新筛选列表:”, arr)
}

四、逐行核心逻辑超详细解析

  1. 防抖机制(900ms 延迟搜索)
    clearTimeout(currentEditId);
    currentEditId = setTimeout(function(){…},900)
    用户打字过程中会持续清除定时器,停止输入900毫秒后才执行一次搜索。大幅减少筛选次数,优化浏览器性能,比无防抖搜索更适合正式项目。
  2. 双条件联合筛选逻辑
    标题匹配
    item.title.includes(title):模糊查询,输入部分关键词即可匹配对应标题数据。
    时间匹配(核心重点)
  • 默认 timeMatch = true:用户不选择时间时,不限制时间,只按标题搜索;
  • 当 开始时间、结束时间同时存在 时,开启时间区间筛选;
  • 判断列表数据的创建时间 createtime 是否在所选区间内;
  • 最终返回 titleMatch && timeMatch:两个条件必须同时满足。
  1. 人性化提示逻辑
  • 筛选结果为空 → 固定提示「没有搜索结果」;
  • 筛选结果不为空,且用户输入/选择了条件 → 提示「搜索成功」;
  • 用户未输入任何条件、默认刷新页面 → 不弹出成功提示,避免干扰体验。
  1. 分页重载
    initPagination(result):将筛选后的全新数组传入分页函数,实现列表实时更新,是后台列表搜索的标准写法。
    五、功能亮点(面试/作业加分点)
  2. 多条件并行筛选:支持单独搜标题、单独搜时间、标题+时间组合搜索;
  3. 智能时间判断:不选时间则不限制时间区间,逻辑严谨;
  4. 防抖性能优化:900ms 延迟,兼顾流畅度与性能;
  5. 精准提示交互:空搜索、有结果、无结果区分提示,用户体验更好;
  6. 结构解耦:统一 doSearch() 函数,所有搜索入口共用一套筛选逻辑,便于维护。
    六、总结
    本次实现的 标题+日历时间段多条件防抖搜索 是企业级后台最常用的筛选方案:
  7. 通过隐藏域存储时间参数,配合双日历选择实现时间段筛选;
  8. 使用 filter 数组筛选 + includes 模糊匹配,完成标题搜索;
  9. 逻辑与运算 && 实现多条件同时生效;
  10. 定时器防抖解决高频输入卡顿问题;
  11. 统一封装搜索函数,代码复用性高,适合项目迭代开发。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/21 17:34:42

HarmonyOS趣味相机实战第26篇:ArkUI拍照结果预览、PixelMap释放与操作分流

HarmonyOS趣味相机实战第26篇&#xff1a;ArkUI拍照结果预览、PixelMap释放与操作分流 摘要 相机调用 capture() 成功只是拍照流程的中点。用户还需要看结果、核对水印、决定重拍、保存到相册或转成图片文档。这个短暂的结果页同时持有大体积 PixelMap、照片元数据和多个异步操…

作者头像 李华
网站建设 2026/7/21 17:33:50

如何快速上手SSRS:遥感语义分割的完整入门教程

如何快速上手SSRS&#xff1a;遥感语义分割的完整入门教程 【免费下载链接】SSRS Semantic Segmentation for Remote Sensing 项目地址: https://gitcode.com/gh_mirrors/ss/SSRS SSRS&#xff08;Semantic Segmentation for Remote Sensing&#xff09;是一个专注于遥感…

作者头像 李华
网站建设 2026/7/21 17:33:44

终极指南:3步搭建专属Mindustry服务器,免费联机塔防战斗

终极指南&#xff1a;3步搭建专属Mindustry服务器&#xff0c;免费联机塔防战斗 【免费下载链接】Mindustry The automation tower defense RTS 项目地址: https://gitcode.com/GitHub_Trending/min/Mindustry 还在为找不到稳定Mindustry服务器而烦恼吗&#xff1f;想和…

作者头像 李华
网站建设 2026/7/21 17:31:59

eDBG内核要求详解:为什么需要Android 5.10+内核和KernelSU

eDBG内核要求详解&#xff1a;为什么需要Android 5.10内核和KernelSU 【免费下载链接】eDBG eBPF-based lightweight debugger for Android with MCP support 项目地址: https://gitcode.com/gh_mirrors/edb/eDBG eDBG作为一款基于eBPF技术的Android轻量级调试器&#x…

作者头像 李华
网站建设 2026/7/21 17:29:01

【电子科技大学主办 | IEEE冠名会议 | 往届均完成出版并提交EI, Scopus检索 | 刊会结合,期刊征稿| EI稳定检索】第五届IEEE电子信息技术国际学术会议(IEEE-EIT 2026)

第五届IEEE电子信息技术国际学术会议&#xff08;IEEE-EIT 2026&#xff09; 2026 IEEE 5th International Conference on Electronic Information Technology 2026年8月28-30日&#xff0c;中国成都&#xff08;线下&#xff09; 大会官网&#xff1a;www.ic-eit.net【投稿参…

作者头像 李华