vue中使用element ui的input框?qū)崿F(xiàn)模糊搜索的輸入框
說不多說直接貼代碼,在template里面:
<el-autocomplete class="inline-input" v-model="disease" :fetch-suggestions="querySearch" placeholder="請(qǐng)輸入疾病名稱" :trigger-on-focus="false" //這個(gè)改為true就是激活即列出輸入建議 @select="handleSelect" @keyup.enter.native="search" ></el-autocomplete>
在data里面:
data () { return { diseaseList: [], //這個(gè)值是需要匹配的值 disease: '' //這個(gè)值是用戶正在輸入的值 } }
在mounted里面
這里主要是給diseaseList賦值,這個(gè)準(zhǔn)備用來匹配用戶輸入的值disease是否與diseaseList相同。
mounted () { getDiseaseMainSetting().then(res => { if (res.code === 200) { res.data.forEach(item => { this.diseaseList.push({ id: item.icdMainId, value: item.icdMainName }) }) } }) },
在methods里面
/* fetch-suggestions 是一個(gè)返回輸入建議的方法屬性,在該方法中你可以在輸入建議數(shù)據(jù)準(zhǔn)備好時(shí)通過 cb(data) 返回到 autocomplete 組件中. */ querySearch (queryString, cb) { const diseaseList = this.diseaseList const results = queryString ? diseaseList.filter(this.createFilter(queryString)) : diseaseList // 調(diào)用 callback 返回建議列表的數(shù)據(jù) cb(results) }, createFilter (queryString) { return disease => { return ( disease.value.toLowerCase().indexOf(queryString.toLowerCase()) !== -1 // 改為===0 就是篩選的數(shù)據(jù)只是首字匹配的列表項(xiàng),需要包含輸入字的所有列表項(xiàng)改為!==-1 ) } }, /* 跳轉(zhuǎn)并傳值 */ handleSelect (item) { if (this.$route.path === '/clinicalAnalysis') { this.$router.push({ path: '/effectAnalysis', query: { keyword: this.disease, id: item.id } }) } }, handleIconClick (ev) { console.log(ev) } }
如果需要加一個(gè)點(diǎn)擊確認(rèn)的按鈕,方法類似,代碼如下:
<el-button type="primary" @click="search">搜索</el-button>
方法如下:
search () { if (!this.disease) { this.$message.warning('請(qǐng)輸入您要搜索疾病的名稱') return } /* 跳轉(zhuǎn)并傳值 */ if (this.$route.path === '/clinicalAnalysis') { let diseaseMess = [] this.diseaseList.forEach((item, index) => { if (this.disease === item.value) { diseaseMess.push(item.value) this.$router.push({ path: '/effectAnalysis', query: { keyword: this.disease, id: item.id } }) } }) // 判斷一下,如果該長(zhǎng)度為0的話,那就證明輸入的內(nèi)容和列表的內(nèi)容不一樣。 if (diseaseMess.length === 0) { this.$message.warning('未配置“' + this.disease + '”該病種') } } else { let keywords = [] let errorMess = [] this.diseaseList.forEach(item => { if (this.disease === item.value) { errorMess.push(item.value) keywords.push({ name: item.value, id: item.id }) } }) if (errorMess.length === 0) { this.$message.warning('未配置“' + this.disease + '”該病種') } this.$emit('keywords', keywords) } },
部分解釋
效果如下:
到此這篇關(guān)于vue中使用element ui的input框做一個(gè)帶模糊搜索的輸入框的文章就介紹到這了,更多相關(guān)vue element ui輸入框內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Vue Webpack2單元測(cè)試示例詳解
這篇文章主要給大家介紹了關(guān)于Vue Webpack2單元測(cè)試的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08Nginx部署前端Vue項(xiàng)目的步驟、常見問題與解決方案
在現(xiàn)代Web開發(fā)中,Vue.js成為前端開發(fā)者構(gòu)建單頁應(yīng)用的熱門框架,Nginx以其高性能和穩(wěn)定性,成為部署Vue項(xiàng)目的理想選擇,這篇文章主要介紹了Nginx部署前端Vue項(xiàng)目的步驟、常見問題與解決方案,需要的朋友可以參考下2024-09-09vue實(shí)現(xiàn)多級(jí)側(cè)邊欄的封裝
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)多級(jí)側(cè)邊欄的封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07vue計(jì)時(shí)器的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了vue計(jì)時(shí)器的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06一起寫一個(gè)即插即用的Vue Loading插件實(shí)現(xiàn)
這篇文章主要介紹了一起寫一個(gè)即插即用的Vue Loading插件實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Vue下滾動(dòng)到頁面底部無限加載數(shù)據(jù)的示例代碼
本篇文章主要介紹了Vue下滾動(dòng)到頁面底部無限加載數(shù)據(jù)的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04