首页 > 网页制作 >Layui如何实现表格内容的搜索结果关键词高亮

Layui如何实现表格内容的搜索结果关键词高亮

来源:互联网 2026-04-26 19:08:01

Layui表格搜索后如何高亮关键词 需要修改render时的cols配置,通过templet手动拼接HTML,将搜索关键词用包裹。Layui原生不支持自动高亮,必须自行实现字符串替换。 如何在templet中安全替换关键词以避免误匹配和XSS风险 常见误区是直接使用str.replace(keywo

Layui表格搜索后如何高亮关键词

需要修改render时的cols配置,通过templet手动拼接HTML,将搜索关键词用包裹。Layui原生不支持自动高亮,必须自行实现字符串替换。

Layui如何实现表格内容的搜索结果关键词高亮

长期稳定更新的攒劲资源: >>>点此立即查看<<<

如何在templet中安全替换关键词以避免误匹配和XSS风险

常见误区是直接使用str.replace(keyword, 'xxx')。这种做法容易破坏HTML结构,可能引发XSS风险,甚至错误匹配属性值如data-id="keyword"。正确思路是先提取纯文本内容,替换关键词后再安全地插回。

具体步骤如下:

  • 提取纯文本:使用$(cellData).text()或正则表达式/>([^<]*)获取单元格内的文字内容。
  • 转义关键词:搜索词可能包含正则特殊字符(如.*),直接匹配会出错。Layui未提供内置转义方法,需自行实现类似RegExp.escape的功能。
  • 安全渲染:替换完成后,使用layui.$('
    ' + highlighted + '
    ').html()
    确保输出安全的HTML文本,避免脚本执行。

以下为可直接参考的代码示例:

templet: function(d) {
  const text = layui.$('
' + d.title + '
').text(); const keyword = layui.table.getSearchKey() || ''; if (!keyword) return text; const escaped = keyword.replace(/[.*+^${}()|[\]\]/g, '\\$&'); const reg = new RegExp('(' + escaped + ')', 'gi'); return text.replace(reg, '$1'); }

搜索关键词来源:layui.table.getSearchKey()并不存在

Layui本身未提供layui.table.getSearchKey()这样的全局API来获取当前搜索词。关键词需自行记录。

通常有两种方案:

  • 自定义搜索栏:若使用toolbar: '#toolbarDemo'方式,可直接从对应输入框获取,如$('#keyword').val()
  • 内置搜索功能:若使用Layui自带搜索(通过defaultToolbar: ['filter']开启),搜索框会动态生成在.layui-table-tool .layui-inline下。可通过$('.layui-table-tool input').val()读取,但时机至关重要——必须在done回调或search事件触发时获取,否则可能得到旧值或空值。

注意避免在templet函数中实时查询DOM获取关键词,因为渲染时搜索框的值可能尚未更新。更稳妥的做法是在搜索事件发生时,通过外部变量或闭包缓存关键词供后续渲染使用。

样式未生效:类名正确但缺少CSS规则

仅定义layui-table-keyword类名无法实现高亮效果,必须手动添加CSS规则。为避免被表格单元格的内联样式覆盖,建议使用更具体的选择器以提高权重。

推荐写法:

.layui-table tbody td .layui-table-keyword {
  background-color: #ffd850;
  padding: 0 4px;
  border-radius: 2px;
}

若表格启用了skin: 'row'even等行样式,需检查高亮背景色是否被斑马纹背景覆盖,必要时可添加!important或调整颜色方案。

实现关键词高亮的主要难点通常不在于字符串替换逻辑,而在于两个细节:“在何时获取关键词”以及“从何处稳定获取”。搜索后重新渲染时关键词为空的问题,往往源于未在done回调中同步更新缓存变量,或事件监听类型错误。理顺这些环节,问题即可解决。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

相关攻略

更多

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。