vue搜索框实现关键字高亮功能
时间: 2023-07-13 20:20:46 浏览: 199
要实现在 Vue 中的搜索框中输入关键字后,将匹配到的内容高亮显示,可以遵循以下步骤:
1. 在 data 中定义一个变量来保存搜索关键字。
2. 在模板中使用 input 元素来渲染搜索框,并为其绑定一个 input 事件来监听输入内容变化。
3. 在模板中渲染需要搜索的内容,并使用 v-html 指令将内容渲染为 HTML。
4. 使用 computed 属性来实现关键字高亮的逻辑。在 computed 中定义一个方法,接收需要搜索的内容和搜索关键字,并使用正则表达式将匹配到的内容用 <span> 标签包裹,从而达到高亮的效果。
以下是一个示例代码:
```
<template>
<div>
<input type="text" v-model="searchText" @input="highlightText" placeholder="请输入搜索关键字">
<div v-html="highlightedContent"></div>
</div>
</template>
<script>
export default {
data() {
return {
searchText: '',
content: '这是一段需要搜索的内容,其中包含关键字 Vue 和高亮。'
}
},
computed: {
highlightedContent() {
const regex = new RegExp(this.searchText, 'gi')
return this.content.replace(regex, '<span class="highlight">$&</span>')
}
},
methods: {
highlightText() {
// 触发 computed 中的方法
}
}
}
</script>
<style>
.highlight {
color: red;
font-weight: bold;
}
</style>
```
在这个示例中,我们在 data 中定义了 searchText 和 content 两个变量,其中 content 是需要搜索的内容。在模板中使用 input 元素来渲染搜索框,并使用 v-model 将输入的内容绑定到 searchText 上,在 input 事件中触发 highlightText 方法。使用 v-html 指令将 computed 中返回的内容渲染为 HTML。在 computed 中定义了一个方法 highlightedContent,使用正则表达式将匹配到的内容用 span 标签包裹。最后在样式中定义了高亮的样式。
阅读全文