需求:
根据输入的文本动态过滤选项列表,并在下方显示匹配到的选项。当用户勾选匹配到的选项时,把该选项的值赋值给输入框中绑定的值。
当用户取消选择时,输入框中的字段可以随意编辑。
组件:el-input、el-checkbox-group、el-checkbox
<el-form-item label="测试一下">
<el-input
v-model="selectedValue"
placeholder="请输入内容"
@input="onInputChange"
></el-input>
<div
v-if="filteredOptions.length > 0"
style="
border: 1px solid #e7eaec;
padding: 10px;
border-radius: 10px;
background: #fff;
"
>
<el-checkbox-group v-model="checked" @change="onCheckboxChange">
<div v-for="(item, index) in filteredOptions" :key="index">
<el-checkbox :label="item.value">{{
item.label
}}</el-checkbox>
</div>
</el-checkbox-group>
</div>
</el-form-item>
options: [
{ label: "选项一", value: "选项一" },
{ label: "选项二", value: "选项二" },
{ label: "选项三", value: "选项三" },
],
selectedValue:'',
filteredOptions: [],
checked: [],
onInputChange(value) {
if (value == "") {
this.filteredOptions = [];
this.checked = [];
return;
}
this.filteredOptions = this.options.filter(
(item) => item.label.includes(value) || item.value.includes(value)
);
if (this.filteredOptions.length === 0) {
this.checked = [];
}
},
onCheckboxChange(value) {
if (value.length > 1) {
this.checked = [value[value.length - 1]];
}
if (this.checked.length > 0) {
this.selectedValue = this.checked[0];
}
},