在vue中根據(jù)光標(biāo)的顯示與消失實(shí)現(xiàn)下拉列表
重點(diǎn)知識(shí)
mousedown事件:mousedown的執(zhí)行順序大于blur事件
HTML代碼
<template> <div> <input ref="search" @focus="showList(true)" v-model="search" @blur="showList(false)"/> <ul v-if="state"> <li style="width: 100px;background: goldenrod;color: #fff" @mousedown="handleSearch(1)">1</li> <li style="width: 100px;background: goldenrod;color: #fff" @mousedown="handleSearch(2)">2</li> <li style="width: 100px;background: goldenrod;color: #fff" @mousedown="handleSearch(3)">3</li> <li style="width: 100px;background: goldenrod;color: #fff" @mousedown="handleSearch(4)">4</li> </ul> </div> </template>
通過(guò)上面的代碼生成了我們的基本下拉列表,接下來(lái)是data數(shù)據(jù)的解析:
data() {
return {
search: '',//搜索框值
state: false,//是否顯示下拉列表
isShowList: false,//判斷是點(diǎn)擊內(nèi)容隱藏光標(biāo)的,還是點(diǎn)擊空白隱藏光標(biāo)的
}
},
詳細(xì)函數(shù)解析:
//顯示光標(biāo)和失去光標(biāo)事件
showList(state) {//state用于判斷是否是得到光標(biāo)事件還是失去光標(biāo)事件
if (state) {
this.state = state//顯示下拉列表
} else {
if(this.isShowList){//this.isShowList用于判斷是否是下拉列表里的內(nèi)容點(diǎn)擊的事件
//把this.isShowList賦值為false讓點(diǎn)擊空白區(qū)能再次觸發(fā)失去光標(biāo)事件
this.isShowList = false
//讓input一直都有光標(biāo)事件
this.$refs.search.focus()
}else {
this.state = state //隱藏下拉框
}
}
},
handleSearch(data) {//data搜索的數(shù)據(jù)
this.search = data//賦值
this.isShowList = true//這是區(qū)別是否是內(nèi)容區(qū)的點(diǎn)擊事件
}
詳細(xì)過(guò)程
- 點(diǎn)擊input標(biāo)簽觸發(fā)showList(true)方法,有它是true直接執(zhí)行 this.state = state//顯示下拉列表
- 點(diǎn)擊下拉框內(nèi)容觸發(fā)handleSearch(data)方法 把 this.isShowList = true 標(biāo)注這是在下拉框內(nèi)容的點(diǎn)擊事件,將不會(huì)隱藏下拉框
- 最后通過(guò)blur觸發(fā)showList(false),他將根據(jù)this.isShowList判斷是否隱藏下拉框,當(dāng)this.isShowList是true時(shí),執(zhí)行this.isShowList = false 把this.isShowList回復(fù)原樣,讓點(diǎn)擊空白區(qū)也能隱藏下拉框,
- this.$refs.search.focus()讓input再次獲得光標(biāo)事件,這將為點(diǎn)擊空白區(qū)能觸發(fā)失去光標(biāo)事件讓下拉框隱藏起來(lái)
參考:http://www.dhdzp.com/article/171151.htm
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue實(shí)現(xiàn)Google第三方登錄的示例代碼
本文記錄作者在vue項(xiàng)目中使用到Google第三方登錄,查詢到的資料文檔也不詳細(xì),故此把自己所遇到的坑及問(wèn)題詳細(xì)的記錄下來(lái)。2021-07-07
Vue+Bootstrap收藏(點(diǎn)贊)功能邏輯與具體實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Vue+Bootstrap收藏(點(diǎn)贊)功能邏輯與具體實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10
vue實(shí)現(xiàn)離線地圖+leaflet+高德瓦片的詳細(xì)代碼
這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)離線地圖+leaflet+高德瓦片的詳細(xì)代碼,Vue Leaflet是一種結(jié)合了Vue框架和Leaflet庫(kù)的前端技術(shù),用于展示和操作天地圖,需要的朋友可以參考下2023-10-10
簡(jiǎn)單實(shí)現(xiàn)Vue的observer和watcher
這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)Vue的observer和watcher,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Vue中使用iframe踩坑問(wèn)題記錄 iframe+postMessage
這篇文章主要介紹了Vue中使用iframe踩坑問(wèn)題記錄 iframe+postMessage,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
vue中使用v-if隱藏元素時(shí)會(huì)出現(xiàn)閃爍問(wèn)題的解決
這篇文章主要介紹了vue中使用v-if隱藏元素時(shí)會(huì)出現(xiàn)閃爍問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
Vue全局使用less樣式,組件使用全局樣式文件中定義的變量操作
這篇文章主要介紹了Vue全局使用less樣式,組件使用全局樣式文件中定義的變量操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
Vue批量注冊(cè)組件實(shí)現(xiàn)動(dòng)態(tài)組件技巧
Vue 動(dòng)態(tài)組件的應(yīng)用場(chǎng)景很多,可應(yīng)用于動(dòng)態(tài)頁(yè)簽,動(dòng)態(tài)路由等場(chǎng)景,其核心原理是批量注冊(cè),在Vue2和Vue3中實(shí)現(xiàn)原理相同,只是語(yǔ)法略有差異,本文給大家介紹了Vue批量注冊(cè)組件實(shí)現(xiàn)動(dòng)態(tài)組件技巧,需要的朋友可以參考下2024-11-11

