vue下拉框值改变_element-ui可输入下拉框改变输入值对应的value

本文探讨了在Vue.js中如何处理可输入下拉框的动态选项添加,特别是在用户输入如'Photoshop'时,将输入值转化为JSON格式。通过监听change事件,检查输入值并添加到options数组中,同时更新value为对应的JSON对象。在添加选项后,使用$nextTick确保DOM更新后再进行选择,避免了输入项丢失的问题。
摘要由CSDN通过智能技术生成
Document

placeholder="请选择文章标签" @change="changeValue($event)">

var vm = new Vue({

el: "#app",

data: {

options: [{

value: '{name:"HTML",value:"HTML"}',

label: 'HTML'

}, {

value: '{name:"CSS",value:"CSS"}',

label: 'CSS'

}, {

value: '{name:"JavaScript",value:"JavaScript"}',

label: 'JavaScript'

}],

value: []

},

methods:{

changeValue(e){

console.log(e)

}

}

})

可输入下拉框需要以下几个属性:

filterable:是否可搜索

allow-create:是否允许用户创建新条目,需配合 filterable 使用

default-first-option:在输入框按下回车,选择第一个匹配项。需配合 filterable 或 remote 使用

根据需求,提交的数据需要json格式{name:"HTML",value:"HTML"},当输入Photoshop作为选项时,value默认为输入的值Photoshop,需要将其修改成json格式,可以在select的change事件修改。

还有一个问题是输入Photoshop后会发现下拉框多了一个选项,但label为undefined,如果此时选择了其他选项,再次打开下拉框时Photoshop就不存在了,因为并没有真实的将数据添加到options中

image.png

因此,需要在changeValue时给options添加新选项,并且将新选项的value改成json格式。

changeValue(e) {

console.log(e)

// 添加选项

if (e.indexOf("value") == -1) {

this.options.unshift({

label: e,

value: `{name:\"${e}\",value:\"${e}\"}`

});

// DOM中添加选项后,再改变v-model的值,一定要用 $nextTick

this.$nextTick(() => {

this.value = `{name:\"${e}\",value:\"${e}\"}`;

// this.$emit("input", this.value);

});

}

}

注意一定要在DOM中添加选项后再去选择输入的值,要使用$nextTick方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值