vue中使用element ui的input框?qū)崿F(xiàn)模糊搜索的輸入框
說不多說直接貼代碼,在template里面:
<el-autocomplete class="inline-input" v-model="disease" :fetch-suggestions="querySearch" placeholder="請輸入疾病名稱" :trigger-on-focus="false" //這個改為true就是激活即列出輸入建議 @select="handleSelect" @keyup.enter.native="search" ></el-autocomplete>
在data里面:
data () { return { diseaseList: [], //這個值是需要匹配的值 disease: '' //這個值是用戶正在輸入的值 } }
在mounted里面
這里主要是給diseaseList賦值,這個準(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 是一個返回輸入建議的方法屬性,在該方法中你可以在輸入建議數(shù)據(jù)準(zhǔn)備好時通過 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ù)只是首字匹配的列表項,需要包含輸入字的所有列表項改為!==-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) } }
如果需要加一個點(diǎn)擊確認(rèn)的按鈕,方法類似,代碼如下:
<el-button type="primary" @click="search">搜索</el-button>
方法如下:
search () { if (!this.disease) { this.$message.warning('請輸入您要搜索疾病的名稱') 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 } }) } }) // 判斷一下,如果該長度為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框做一個帶模糊搜索的輸入框的文章就介紹到這了,更多相關(guān)vue element ui輸入框內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一起寫一個即插即用的Vue Loading插件實現(xiàn)
這篇文章主要介紹了一起寫一個即插即用的Vue Loading插件實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Vue下滾動到頁面底部無限加載數(shù)據(jù)的示例代碼
本篇文章主要介紹了Vue下滾動到頁面底部無限加載數(shù)據(jù)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04