溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

vue項(xiàng)目中elementUI 使用el-select 時(shí)會(huì)觸發(fā)change事件如何解決

發(fā)布時(shí)間:2020-11-18 14:18:07 來(lái)源:億速云 閱讀:4697 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

vue項(xiàng)目中elementUI 使用el-select 時(shí)會(huì)觸發(fā)change事件如何解決?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

如下所示:

<el-select v-model="level" size="mini" placeholder="請(qǐng)選擇" :change="selectChange()">
 <el-option v-for="item in select" :key="item.value" :label="item.label" :value="item.value"></el-option>
 </el-select>

我們需要的是選擇之后才觸發(fā),但是這樣寫(xiě)你會(huì)發(fā)現(xiàn),頁(yè)面初始化的時(shí)候會(huì)觸發(fā)多次,選擇之后又會(huì)觸發(fā)多次,原因是我們用錯(cuò)了標(biāo)簽,應(yīng)該用 @change="selectChange()

 <el-select v-model="level" size="mini" placeholder="請(qǐng)選擇" @change="selectChange()">
 <el-option v-for="item in select" :key="item.value" :label="item.label" :value="item.value"></el-option>
 </el-select>

這樣寫(xiě)就可以了,v-bind的縮寫(xiě)是:,v-on的縮寫(xiě)是@,這里是觸發(fā)事件,應(yīng)該用@,

補(bǔ)充知識(shí):為elment-ui的el-select選擇器添加onblur失焦事件產(chǎn)生的問(wèn)題

如下所示:

<div class="oneline">
     <span >用戶編號(hào):</span>
     <div class="block left">
      <el-select
      :no-match-text="msg"
      :popper-append-to-body=false
      placeholder='請(qǐng)選擇'
      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項(xiàng)目中elementUI 使用el-select 時(shí)會(huì)觸發(fā)change事件如何解決

所需要實(shí)現(xiàn)的功能是當(dāng)查詢輸入時(shí),如果用戶輸入的數(shù)據(jù)是選項(xiàng)里面不匹配的,則返回顯示無(wú)匹配數(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='無(wú)匹配數(shù)據(jù)'
     // this.msg=' '
    }
  }

上述代碼的this.$refs.select.query是選擇器輸入時(shí)查詢框綁定的值。

選擇器屬性有filterable屬性時(shí)為可查詢選擇。

使用開(kāi)發(fā)者工具測(cè)試時(shí)發(fā)現(xiàn)el-select選擇器數(shù)據(jù)綁定的對(duì)象value跟查詢輸入時(shí)的數(shù)據(jù)對(duì)象不是同一個(gè),然后查看el-select源碼得知查詢輸入時(shí)的數(shù)據(jù)綁定在select.query上。

本來(lái)el-select有個(gè)blur事件綁定函數(shù)屬性。但是使用后發(fā)現(xiàn)有時(shí)候失焦事件并不能觸發(fā)生效,也就導(dǎo)致所綁定的函數(shù)不能執(zhí)行。

看了源碼得知blur這個(gè)事件函數(shù)有個(gè)定時(shí)器什么的,看不太懂,但是知道不是瀏覽器原生的失焦事件。

于是用vue的ref定位到該選擇器來(lái)實(shí)現(xiàn)綁定原生onblur事件,則可以避免這個(gè)問(wèn)題。

也可以使用操作dom查詢利用選擇器定位到這個(gè)選擇器進(jìn)行失焦事件綁定。

關(guān)于vue項(xiàng)目中elementUI 使用el-select 時(shí)會(huì)觸發(fā)change事件如何解決問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI