vue页面el-form中,怎么实现模糊查询的同时还是多选?
时间: 2024-10-17 15:14:48 浏览: 18
在Vue框架中,如果你想要在`el-form`组件中实现模糊查询并保持多选功能,可以结合`el-autocomplete`(自动完成输入框)和`el-checkbox-group`(复选框组)。以下是基本的实现步骤:
1. 引入依赖:
首先,在你的Vue组件中引入Element UI库中的这两个组件:
```html
<template>
<el-form ref="form">
<!-- 其他表单内容 -->
<el-autocomplete
v-model="searchValue"
:trigger-on-focus="false"
placeholder="请输入关键词"
@select="handleSelect"
:options="options"
></el-autocomplete>
<el-checkbox-group v-model="selectedItems">
<!-- 这里显示选项,每个option应该有value属性供选择 -->
<el-option
v-for="(item, index) in filteredOptions"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-checkbox-group>
</el-form>
</template>
```
2. 定义数据和方法:
- `searchValue`: 存储用户输入的模糊查询关键词。
- `options`: 初始化的完整选项列表。
- `filteredOptions`: 结合搜索关键词过滤后的选项。
- `handleSelect(item)`: 当用户从自动完成选择项时触发,更新`selectedItems`。
```js
<script>
export default {
data() {
return {
searchValue: '',
options: [], // 假设这是你获取的多选项目数据
selectedItems: []
};
},
computed: {
filteredOptions() {
if (!this.searchValue) {
return this.options;
}
return this.options.filter((item) =>
item.label.includes(this.searchValue)
);
}
},
methods: {
handleSelect(item) {
// 如果项未被选中则添加,如果已选中则移除
if (!this.selectedItems.includes(item.value)) {
this.selectedItems.push(item.value);
} else {
const index = this.selectedItems.indexOf(item.value);
if (index > -1) {
this.selectedItems.splice(index, 1);
}
}
}
}
};
</script>
```
这样,当你在自动完成输入框中输入关键词,`filteredOptions`就会动态展示匹配的结果,同时`el-checkbox-group`会只显示匹配的选择项,允许用户进行多选操作。
阅读全文