解決vue elementUI 使用el-select 時 change事件的觸發(fā)問題
如下所示:
<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>
我們需要的是選擇之后才觸發(fā),但是這樣寫你會發(fā)現(xiàn),頁面初始化的時候會觸發(fā)多次,選擇之后又會觸發(fā)多次,原因是我們用錯了標(biāo)簽,應(yīng)該用 @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的縮寫是@,這里是觸發(fā)事件,應(yīng)該用@,
補(bǔ)充知識:為elment-ui的el-select選擇器添加onblur失焦事件產(chǎn)生的問題
如下所示:
<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>

所需要實(shí)現(xiàn)的功能是當(dāng)查詢輸入時,如果用戶輸入的數(shù)據(jù)是選項(xiàng)里面不匹配的,則返回顯示無匹配數(shù)據(jù)。
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='無匹配數(shù)據(jù)'
// this.msg=' '
}
}
上述代碼的this.$refs.select.query是選擇器輸入時查詢框綁定的值。
選擇器屬性有filterable屬性時為可查詢選擇。
使用開發(fā)者工具測試時發(fā)現(xiàn)el-select選擇器數(shù)據(jù)綁定的對象value跟查詢輸入時的數(shù)據(jù)對象不是同一個,然后查看el-select源碼得知查詢輸入時的數(shù)據(jù)綁定在select.query上。
本來el-select有個blur事件綁定函數(shù)屬性。但是使用后發(fā)現(xiàn)有時候失焦事件并不能觸發(fā)生效,也就導(dǎo)致所綁定的函數(shù)不能執(zhí)行。
看了源碼得知blur這個事件函數(shù)有個定時器什么的,看不太懂,但是知道不是瀏覽器原生的失焦事件。
于是用vue的ref定位到該選擇器來實(shí)現(xiàn)綁定原生onblur事件,則可以避免這個問題。
也可以使用操作dom查詢利用選擇器定位到這個選擇器進(jìn)行失焦事件綁定。
以上這篇解決vue elementUI 使用el-select 時 change事件的觸發(fā)問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- vue elementui表格獲取某行數(shù)據(jù)(slot-scope和selection-change方法使用)
- Vue中使用 ElementUi 的 el-select 實(shí)現(xiàn)全選功能(思路詳解)
- Vue中ElementUI結(jié)合transform使用時如何修復(fù)el-select彈框定位不準(zhǔn)確問題
- vue elementUI select下拉框設(shè)置默認(rèn)值(賦值)失敗的解決
- vue elementUI select下拉框如何設(shè)置默認(rèn)值
- vue elementui select標(biāo)簽監(jiān)聽change事件失效問題
相關(guān)文章
用Vue.js實(shí)現(xiàn)監(jiān)聽屬性的變化
響應(yīng)系統(tǒng)是Vue.js的一個顯著功能,修改屬性,可以更新視圖,這讓狀態(tài)管理變得非常簡單且直觀。這篇文章主要給大家介紹如何利用Vue.js實(shí)現(xiàn)觀察屬性的變化,有需要的朋友們可以參考借鑒,感興趣的朋友們下面來一起看看吧。2016-11-11
SpringBoot+Vue項(xiàng)目線上買菜系統(tǒng)源碼展示
本線上買菜系統(tǒng)采用的數(shù)據(jù)庫是Mysql,使用springboot框架開發(fā)。在設(shè)計過程中,充分保證了系統(tǒng)代碼的良好可讀性、實(shí)用性、易擴(kuò)展性、通用性、便于后期維護(hù)、操作方便以及頁面簡潔等特點(diǎn),需要的朋友可以參考下2022-08-08
VUE項(xiàng)目中調(diào)用高德地圖的全流程講解
這篇文章主要介紹了VUE項(xiàng)目中調(diào)用高德地圖的全流程講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
vue3?組合式api中?ref?和$parent?的使用方法
vue3中, 在 組件中添加一個 component ref=“xxx” ,就可以在父組件中得到 子組件的 dom 對象, 以及 虛擬的 dom 對象, 有了虛擬 dom, 我們就可以在父組件中控制子組件的顯示了,這篇文章主要介紹了vue3組合式api中ref和$parent的使用,需要的朋友可以參考下2023-09-09

