最近有个需求是下拉框既可下拉选择也可手动输入,antd 的a-select组件不能直接使用,所以需要基于插件再修改一下。
<a-select
v-decorator="['mc',{ rules: [{ required: true, message: '请输入子任务名称!' }] }]"
:show-search="true" //可搜索
:not-found-content="null" //当下拉列表为空时显示的内容
:showArrow="false"
:filter-option="true" //是否根据输入项进行筛选。
:autoClearSearchValue="false"
@search="handleSearch"
@blur="handleBlur"
@change="handleChange"
>
<a-select-option v-for="(item, index) in rwmcOpt" :key="index" :value="item.value">
{{ item.label }}
</a-select-option>
</a-select>
// start---------可输入可下拉单选
handleSearch(value) {
this.handleChange(value);
},
handleChange(value) {
//判断value不等于null并且不为空的情况,然后把选择或者输入的值赋值,如果为空赋值为空数组
this.form.setFieldsValue({"zrwmc":value})
},
handleBlur(value) {
this.form.setFieldsValue({"zrwmc":value})
//判断数组里有没输入的值 如果没有再赋值
let f = this.rwmcOpt.find((r)=>{
return r.value === value;
})
if(!f) this.rwmcOpt.push({label:value,value:String(value)});
},