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

长期稳定更新的攒劲资源: >>>点此立即查看<<<
常见误区是直接使用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本身未提供layui.table.getSearchKey()这样的全局API来获取当前搜索词。关键词需自行记录。
通常有两种方案:
toolbar: '#toolbarDemo'方式,可直接从对应输入框获取,如$('#keyword').val()。defaultToolbar: ['filter']开启),搜索框会动态生成在.layui-table-tool .layui-inline下。可通过$('.layui-table-tool input').val()读取,但时机至关重要——必须在done回调或search事件触发时获取,否则可能得到旧值或空值。注意避免在templet函数中实时查询DOM获取关键词,因为渲染时搜索框的值可能尚未更新。更稳妥的做法是在搜索事件发生时,通过外部变量或闭包缓存关键词供后续渲染使用。
仅定义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回调中同步更新缓存变量,或事件监听类型错误。理顺这些环节,问题即可解决。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述