vue 簡單自動補(bǔ)全的輸入框的示例
實(shí)現(xiàn)一個輸入框,輸入信息后顯示由后臺返回的數(shù)據(jù),供用戶選擇,之前用的elm的組件,不過那個有點(diǎn)大。。。簡單的情況下自己實(shí)現(xiàn)一個也能滿足要求。。。應(yīng)該吧。。。

主題包括一個input用于輸入,一個div用于展示數(shù)據(jù),div里面是數(shù)據(jù)項(xiàng)item
當(dāng)在input中按下回車時,會根據(jù)信息去后臺獲取數(shù)據(jù),如果用戶點(diǎn)擊了別的地方,input失去焦點(diǎn),則提示的div也應(yīng)該收起來
bug:
在blur事件中,如果直接將isShow設(shè)置為false會出問題,先失去焦點(diǎn),顯示面板消失,所以你的點(diǎn)擊不會被監(jiān)聽到。。。設(shè)置一個計(jì)時器,在點(diǎn)擊之后10ms后將面板收起來,問題解決。。。
顯示div將內(nèi)容撐開,改變其他組件布局,設(shè)置div的屬性,即可,高度設(shè)為0,z-index很大,就不會改變其他組件位置
height: 0; z-index: 999;
<template>
<div class="container">
<input v-model="msg" @keyup.enter="search" class="msg" @blur="blur"/>
<div class="select-panel">
<div v-show="isShow" v-for="w in words" class="select-item" @click="click_item(w)">{{w['content']}}</div>
</div>
</div>
</template>
簡單實(shí)現(xiàn)代碼
<template>
<div class="container">
<input v-model="msg" @keyup.enter="search" class="msg" @blur="blur"/>
<div class="select-panel">
<div v-show="isShow" v-for="w in words" class="select-item" @click="click_item(w)">{{w['content']}}</div>
</div>
</div>
</template>
<script>
import {search_word} from "../api/word-api";
export default {
name: "auto-complete",
data() {
return {
msg: '',
words: [],
isShow: false
}
},
computed: {},
methods: {
blur() {
setTimeout(() => {
this.isShow = false
},
200)
},
async search() {
console.log('search msg', this.msg)
this.words = await search_word(this.msg)
console.log(this.words)
this.isShow = true
},
click_item(w) {
console.log('click word', w)
this.$emit('add_word', w)
}
},
}
</script>
<style scoped>
.container {
display: flex;
flex-grow: 0;
flex-shrink: 0;
box-sizing: border-box;
}
.msg {
margin: 5px;
}
.select-panel {
height: 0;
z-index: 999;
}
.select-item {
/*height: 0;*/
z-index: 999;
margin: 1px;
padding: 2px;
background: #fff;
opacity: 0.8;
}
</style>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue實(shí)現(xiàn)Input輸入框模糊查詢方法
- vue input輸入框模糊查詢的示例代碼
- vue element-ui實(shí)現(xiàn)input輸入框金額數(shù)字添加千分位
- vue實(shí)現(xiàn)驗(yàn)證碼輸入框組件
- vue.js 實(shí)現(xiàn)輸入框動態(tài)添加功能
- vue中使用iview自定義驗(yàn)證關(guān)鍵詞輸入框問題及解決方法
- Vue 實(shí)現(xiàn)輸入框新增搜索歷史記錄功能
- vue表單驗(yàn)證之禁止input輸入框輸入空格
- VUE.js實(shí)現(xiàn)動態(tài)設(shè)置輸入框disabled屬性
- vue自定義數(shù)字輸入框組件
相關(guān)文章
從零開始用webpack構(gòu)建一個vue3.0項(xiàng)目工程的實(shí)現(xiàn)
這篇文章主要介紹了從零開始用webpack構(gòu)建一個vue3.0項(xiàng)目工程的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Vue v-for循環(huán)之@click點(diǎn)擊事件獲取元素示例
今天小編就為大家分享一篇Vue v-for循環(huán)之@click點(diǎn)擊事件獲取元素示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
vue?this.$router.go(-1);返回時如何帶參數(shù)
這篇文章主要介紹了vue?this.$router.go(-1);返回時如何帶參數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
Vue?Echarts報(bào)錯Initialize?failed:?invalid?dom解決方法
最近因?yàn)楣ぷ餍枰?用到了ECharts做圖表,也遇到了問題,就來跟大家總結(jié)分享一下,下面這篇文章主要給大家介紹了關(guān)于Vue?Echarts報(bào)錯Initialize?failed:?invalid?dom的解決方法,需要的朋友可以參考下2023-06-06
Vue filter 過濾當(dāng)前時間 實(shí)現(xiàn)實(shí)時更新效果
這篇文章主要介紹了Vue filter 過濾當(dāng)前時間 實(shí)現(xiàn)實(shí)時更新效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12
Vue3中的defineExpose函數(shù)用法深入解析
這篇文章主要介紹了Vue3中的defineExpose函數(shù)用法的相關(guān)資料,defineExpose是Vue3中用于在模式下暴露組件內(nèi)部屬性和方法的輔助函數(shù),它允許父組件通過ref訪問子組件的暴露內(nèi)容,提高組件間的交互能力并保持封裝性,需要的朋友可以參考下2025-01-01

