首页 >> js开发 >> js解决vue elementUI 使用el-select 时 change事件的触发问题js大全
js解决vue elementUI 使用el-select 时 change事件的触发问题js大全
发布时间: 2021年1月13日 | 浏览:
| 分类:js开发
如下所示:
我们需要的是选择之后才触发,但是这样写你会发现,页面初始化的时候会触发多次,选择之后又会触发多次,原因是我们用错了标签,应该用 @change="selectChange()
这样写就可以了,v-bind的缩写是:,v-on的缩写是@,这里是触发事件,应该用@,补充知识:为elment-ui的el-select选择器添加onblur失焦事件产生的问题补充知识:补充知识:为elment-ui的el-select选择器添加onblur失焦事件产生的问题如下所示:
用户编号:
:no-match-text="msg"
:popper-append-to-body=false
placeholder='请选择'
v-model="value" filterable popper-class='contentadd_select'
ref='select'>
v-for="item in users"
:key="item.accont"
:label="item.accont"
:value="item.accont">
用户编号:
:no-match-text="msg"
:popper-append-to-body=false
placeholder='请选择'
v-model="value" filterable popper-class='contentadd_select'
ref='select'>
v-for="item in users"
:key="item.accont"
:label="item.accont"
:value="item.accont">
所需要实现的功能是当查询输入时,如果用户输入的数据是选项里面不匹配的,则返回显示无匹配数据。JS代码如下
this.$refs.select.$refs.reference.$refs.input.onblur = ()=>{
let haveitem=0;
for(let i=0;i
if(this.$refs.select.query==this.users[i].accont){
haveitem++;
}
}
if(!haveitem){
this.value='无匹配数据'
// this.msg=' '
}
}
this.$refs.select.$refs.reference.$refs.input.onblur = ()=>{
let haveitem=0;
for(let i=0;i
if(this.$refs.select.query==this.users[i].accont){
haveitem++;
}
}
if(!haveitem){
this.value='无匹配数据'
// this.msg=' '
}
}上述代码的this.$refs.select.query是选择器输入时查询框绑定的值。选择器属性有filterable属性时为可查询选择。使用开发者工具测试时发现el-select选择器数据绑定的对象value跟查询输入时的数据对象不是同一个,然后查看el-select源码得知查询输入时的数据绑定在select.query上。本来el-select有个blur事件绑定函数属性。但是使用后发现有时候失焦事件并不能触发生效,也就导致所绑定的函数不能执行。看了源码得知blur这个事件函数有个定时器什么的,看不太懂,但是知道不是浏览器原生的失焦事件。于是用vue的ref定位到该选择器来实现绑定原生onblur事件,则可以避免这个问题。也可以使用操作dom查询利用选择器定位到这个选择器进行失焦事件绑定。以上这篇解决vue elementUI 使用el-select 时 change事件的触发问题就是小编分享给大家的全部内容了,希望能给大家一个参考。
用户编号:
:no-match-text="msg"
:popper-append-to-body=false
placeholder='请选择'
v-model="value" filterable popper-class='contentadd_select'
ref='select'>
v-for="item in users"
:key="item.accont"
:label="item.accont"
:value="item.accont">
用户编号:
:no-match-text="msg"
:popper-append-to-body=false
placeholder='请选择'
v-model="value" filterable popper-class='contentadd_select'
ref='select'>
v-for="item in users"
:key="item.accont"
:label="item.accont"
:value="item.accont">
this.$refs.select.$refs.reference.$refs.input.onblur = ()=>{
let haveitem=0;
for(let i=0;i
if(this.$refs.select.query==this.users[i].accont){
haveitem++;
}
}
if(!haveitem){
this.value='无匹配数据'
// this.msg=' '
}
}
this.$refs.select.$refs.reference.$refs.input.onblur = ()=>{
let haveitem=0;
for(let i=0;i
if(this.$refs.select.query==this.users[i].accont){
haveitem++;
}
}
if(!haveitem){
this.value='无匹配数据'
// this.msg=' '
}
}上述代码的this.$refs.select.query是选择器输入时查询框绑定的值。选择器属性有filterable属性时为可查询选择。使用开发者工具测试时发现el-select选择器数据绑定的对象value跟查询输入时的数据对象不是同一个,然后查看el-select源码得知查询输入时的数据绑定在select.query上。本来el-select有个blur事件绑定函数属性。但是使用后发现有时候失焦事件并不能触发生效,也就导致所绑定的函数不能执行。看了源码得知blur这个事件函数有个定时器什么的,看不太懂,但是知道不是浏览器原生的失焦事件。于是用vue的ref定位到该选择器来实现绑定原生onblur事件,则可以避免这个问题。也可以使用操作dom查询利用选择器定位到这个选择器进行失焦事件绑定。以上这篇解决vue elementUI 使用el-select 时 change事件的触发问题就是小编分享给大家的全部内容了,希望能给大家一个参考。