0

0

layui table搜索功能实现 layui表格如何进行条件筛选

煙雲

煙雲

发布时间:2026-03-19 10:16:54

|

921人浏览过

|

来源于php中文网

原创

layui表格搜索核心是手动调用reload()并传where参数,需绑定事件、匹配后端字段名、重置page.curr为1、动态构建非空条件,且确保response配置与接口返回一致。

layui table 的 reload() 是筛选的核心,不是写死在 HTML 里的搜索框

layui 表格本身不带“自动搜索”逻辑,所谓“搜索功能”,本质是手动触发 table.reload() 并传入新的 where 参数。很多人把搜索框写在表格外面却没绑定事件,或者以为加个 id="search" 就能自动联动——不会的。

常见错误现象:table.render() 后点搜索按钮没反应;输入后表格刷新但数据没变;搜索中文时后台收不到参数(其实是编码或 key 名不一致)。

  • 搜索框必须自己写(<input type="text" id="keyword">),并用 on('click', ...)on('keyup', ...) 监听
  • reload() 必须指定同一张表的 id(即 render() 时传的 id 值),否则刷的是另一张表甚至报错 Cannot read property 'config' of undefined
  • where 里字段名要和后端接口约定一致,比如后端接收 title_like,你就不能只传 {keyword: val}
layui.table.reload('userTable', {
  where: { title_like: $('#keyword').val().trim() }
});

多条件筛选时,where 要动态拼,别硬写死

单个关键词还好办,一旦加了下拉选择“状态”、日期范围、“分类 ID”,where 就得根据用户实际填了哪些来组合。直接把所有字段都塞进去,空值也会传给后端,容易导致 SQL 查询出错或命中缓存异常。

使用场景:后台接口要求只传非空条件;前端需要支持“重置筛选”后清空所有条件并重载原始数据。

  • 用一个对象收集条件,每次 reload 前重新构建:const params = {}; → 检查 $('#status').val() 非空才 params.status = ...
  • 日期控件(如 laydate)返回的是字符串,注意格式是否匹配后端预期(2024-01-01 还是 2024/01/01
  • 如果用 form.on('submit(filter)') 绑定搜索按钮,记得 return false; 阻止默认提交,否则页面会刷新

搜索后分页丢失?关键是 page: { curr: 1 } 要显式重置

默认情况下,reload() 不会重置当前页码,而是继续停留在第 3 页搜——结果很可能为空。用户以为“没搜到”,其实是翻到了最后一页的空数据。

像素蛋糕PixCake
像素蛋糕PixCake

像素级AI图像精修软件

下载

性能影响:不重置页码可能导致多次请求无意义的末页数据,尤其在数据量大、分页数多时明显。

  • 只要涉及条件变更,reload 时务必带上 page: { curr: 1 }
  • 如果想保留原页码(极少见),需先读取当前 table.config.page.curr,但要注意该值在 reload 前可能还没更新,稳妥做法是监听 table.on('page(...)', ...) 存到变量里
  • 不要依赖 initSortautoSort 来“顺带”重置,它们和分页无关
layui.table.reload('userTable', {
  where: { keyword: val },
  page: { curr: 1 } // 这一行不能少
});

服务端搜索失败?先确认 requestresponse 的字段名对得上

前端 reload 没问题,但表格一直显示“暂无数据”,大概率是前后端契约断了。layui 默认要求接口返回 data 字段放列表、count 字段放总数,但很多人改了后端返回结构却没同步改 response 配置。

兼容性影响:字段名不一致会导致解析失败,控制台可能静默不出错,但表格内容为空;某些旧版 layui 对大小写敏感(如 Countcount)。

  • 检查 response 配置是否覆盖了默认值:response: { dataName: 'list', countName: 'total' }
  • 用浏览器 Network 面板看接口响应体,确认字段存在且类型正确(total 是数字,不是字符串 "12"
  • 后端如果做了模糊搜索但没加 % 包裹(如 SQL 写成 WHERE name = ? 而非 LIKE ?),前端再怎么 reload 也搜不出结果
layui 的搜索不是开箱即用的功能,它把控制权完全交给你——从 DOM 绑定、参数组装、页码管理到服务端契约,每一步都得亲手对齐。最容易被忽略的,是 reload 时忘记重置 curr,以及 where 字段和后端约定名不一致。这两处一错,整个搜索就卡在“看起来动了,其实没动”的状态。

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

202

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

275

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

413

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

233

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

123

2024.05.22

bootstrap框架介绍
bootstrap框架介绍

本专题整合了bootstrap框架相关介绍,阅读专题下面的文章了解更多详细内容。

0

2026.03.18

vscode 格式化
vscode 格式化

本专题整合了vscode格式化相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.18

vscode设置中文教程
vscode设置中文教程

本专题整合了vscode设置中文相关内容,阅读专题下面的文章了解更多详细教程。

0

2026.03.18

vscode更新教程合集
vscode更新教程合集

本专题整合了vscode更新相关内容,阅读专题下面的文章了解更多详细教程。

2

2026.03.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号