vue搜索查询关键词高亮

220 阅读1分钟

1. 效果背景

大家在后台管理系统的日常开发中,经常会用到搜索框搜索,如果数据量庞大,那么关键词高亮很常用。

2. 效果演示

78e7c56358fb88922517e791e355725.png

3. 实现思路

接收到后端返回的数据时对数据进行操作,搜索匹配关键词,同时使用replace()方法进行字符串的替换, 页面使用v-html实现高亮动态展示。

4. 具体实现过程

4.1 使用indexOf进行匹配

把当前行的关键词val传入进行判断,如果包含关键词,就把关键词给高亮

brightenKeyword(val, keyword) {
   val = val + '';
   if (val.indexOf(keyword) !== -1 && keyword !== '') {
        return val.replace(keyword, '<font color="#409EFF">' + keyword + '</font>')
   } else {
      return val
    }
}

4.2 使用正则表达式进行匹配

brightenKeyword(val, keyword) {
    const Reg = new RegExp(keyword, 'i');
    if (val) {
        return val.replace(Reg, `<span style="color: #409EFF;">${keyword}</span>`);
    }
}

5. 页面

<el-table-column fit prop="name" label="项目名称" header-align="center" align="center">
        <template slot-scope="scope">
            <span v-html="brightenKeyword(scope.row.name, dataForm.name)" ></span>
        </template>
</el-table-column>

7. 使用场景

页面查询搜索方便查询。