解决vue elementUI 使用el-select 时 change事件的触发问题


Posted in Vue.js onNovember 17, 2020

如下所示:

<el-select v-model="level" size="mini" placeholder="请选择" :change="selectChange()">
 <el-option v-for="item in select" :key="item.value" :label="item.label" :value="item.value"></el-option>
 </el-select>

我们需要的是选择之后才触发,但是这样写你会发现,页面初始化的时候会触发多次,选择之后又会触发多次,原因是我们用错了标签,应该用 @change="selectChange()

<el-select v-model="level" size="mini" placeholder="请选择" @change="selectChange()">
 <el-option v-for="item in select" :key="item.value" :label="item.label" :value="item.value"></el-option>
 </el-select>

这样写就可以了,v-bind的缩写是:,v-on的缩写是@,这里是触发事件,应该用@,

补充知识:为elment-ui的el-select选择器添加onblur失焦事件产生的问题

如下所示:

<div class="oneline">
     <span >用户编号:</span>
     <div class="block left">
      <el-select
      :no-match-text="msg"
      :popper-append-to-body=false
      placeholder='请选择'
      v-model="value" filterable popper-class='contentadd_select' 
      ref='select'>
       <el-option
        v-for="item in users"
        :key="item.accont"
        :label="item.accont"
        :value="item.accont">
       </el-option>
      </el-select>
     </div>
    </div>

解决vue elementUI 使用el-select 时 change事件的触发问题

所需要实现的功能是当查询输入时,如果用户输入的数据是选项里面不匹配的,则返回显示无匹配数据。

JS代码如下

this.$refs.select.$refs.reference.$refs.input.onblur = ()=>{
    let haveitem=0;
    for(let i=0;i<this.users.length;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事件的触发问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
vue使用vant中的checkbox实现全选功能
Nov 17 Vue.js
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 Vue.js
vue3.0中友好使用antdv示例详解
Jan 05 Vue.js
如何在vue 中使用柱状图 并自修改配置
Jan 21 Vue.js
Vue实现圆环进度条的示例
Feb 06 Vue.js
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
Vue3.0 手写放大镜效果
Jul 25 Vue.js
一定要知道的 25 个 Vue 技巧
Nov 02 Vue.js
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
vue+echarts实现多条折线图
Mar 21 Vue.js
vue3不同环境下实现配置代理
May 25 Vue.js
vue @ ~ 相对路径 路径别名设置方式
Jun 05 Vue.js
Vue项目利用axios请求接口下载excel
Nov 17 #Vue.js
vue实现下载文件流完整前后端代码
Nov 17 #Vue.js
vue+iview实现文件上传
Nov 17 #Vue.js
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 #Vue.js
vue+iview实现分页及查询功能
Nov 17 #Vue.js
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 #Vue.js
vue+iview分页组件的封装
Nov 17 #Vue.js
You might like
PHP输出缓存ob系列函数详解
2014/03/11 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
用Jquery实现多级下拉框无刷新的联动
2010/12/22 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
学习JavaScript设计模式(封装)
2015/11/26 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
vue自定义全局共用函数详解
2018/09/18 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
[04:40]2016国际邀请赛中国区预选赛全程TOP10镜头集锦
2016/07/01 DOTA
Python中的类学习笔记
2014/09/23 Python
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
大学生求职推荐信
2013/11/27 职场文书
公司活动总结怎么写
2014/06/25 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
2014年图书室工作总结
2014/12/09 职场文书
保证书格式
2015/01/16 职场文书
小学教师个人总结
2015/02/05 职场文书
职称评定个人总结
2015/03/05 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
初中语文教学反思范文
2016/03/03 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书
详解nginx进程锁的实现
2021/06/14 Servers