Vue實(shí)現(xiàn)百度下拉提示搜索功能
一、前期準(zhǔn)備
網(wǎng)上大神已經(jīng)做過這個(gè)功能https://github.com/lavyun/vue-demo-search 這自己僅實(shí)現(xiàn)搜索功能
為了使用百度實(shí)現(xiàn)搜索功能,首先搞清楚下拉數(shù)據(jù)和搜索功能的數(shù)據(jù)接口
01、提示數(shù)據(jù)獲取地址
打開百度官網(wǎng)打開開發(fā)者調(diào)試工具,選中network一項(xiàng),然后我們?cè)谒阉骺蜉斎?a',將會(huì)network發(fā)送的請(qǐng)求,這個(gè)就是提示數(shù)據(jù)的數(shù)據(jù)獲取地址
提示數(shù)據(jù)獲取地址.png
然后簡化一下:
其中“wd=”后接搜索的關(guān)鍵字,“cb=”后接回調(diào)函數(shù)
輸入a時(shí),請(qǐng)求的提示數(shù)據(jù)
02:搜索功能實(shí)現(xiàn)地址
在輸入框中輸入“a”之后,點(diǎn)擊搜索按鈕之后,地址欄中地址就是實(shí)現(xiàn)搜索功能的地址
搜索地址.png
搜索地址簡化前后對(duì)比,是不是看起來很舒服了O(∩_∩)O
簡化地址.png
我們使用簡化之后的地址,搜索關(guān)鍵字“s‘'測(cè)試一下
測(cè)試.png
二、代碼實(shí)現(xiàn)
js代碼
new Vue({ el:'#app', data:{ myData:[], keyword:'', now:-1 }, methods:{ get:function (event) { if(event.keyCode==38||event.keyCode==40)return; if(event.keyCode==13){ window.open('https://www.baidu.com/s?wd='+this.keyword); this.keyword='' } this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{ wd:this.keyword },{ jsonp:'cb' }).then(function (res) { this.myData=res.data.s; },function () { }); }, selectDown:function () { this.now++; if(this.now==this.myData.length)this.now=-1; this.keyword=this.myData[this.now]; }, selectUp:function () { this.now--; if(this.now==-2)this.now=this.myData.length-1; this.keyword=this.myData[this.now]; } } })
html代碼
<div class="container search-container" id="app"> <h1 class="title" >baidu-search</h1> <input type="text" class="form-control" placeholder="請(qǐng)輸入想要搜索關(guān)鍵字" v-model="keyword" @keyup="get($event)" @keydown.down.prevent="selectDown" @keydown.up.prevent="selectUp"> <ul> <li class="text-center" v-for="(value,index) in myData"><span class="text-success textprimary" :class="{gray:index==now}">{{value}}</span></li> </ul> <p ><h2 v-show="myData.length==0" class="text-warning text-center">(*^__^*)暫時(shí)沒有數(shù)據(jù)</h2></p> </div>
get方法實(shí)現(xiàn)獲取下拉數(shù)據(jù)和搜索功能,輸入keyword之后,調(diào)用get方法使用jsonp獲取提示數(shù)據(jù),然后賦值給myData,然后使用v-for遍歷提示數(shù)據(jù)
提示數(shù)據(jù).png
然后selectDown和selectUp實(shí)現(xiàn)上下選中數(shù)據(jù),當(dāng)按下回車鍵時(shí),實(shí)現(xiàn)搜索
完整代碼:https://github.com/yanqiangmiffy/baidu-search
三、實(shí)現(xiàn)效果
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA中Debug調(diào)試VUE前端項(xiàng)目調(diào)試JS只需兩步
這篇文章主要為大家介紹了在IDEA中Debug調(diào)試VUE前端項(xiàng)目,只需要兩步就可以調(diào)試JS的實(shí)現(xiàn)方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-02-02vue單頁面應(yīng)用打開新窗口顯示跳轉(zhuǎn)頁面的實(shí)例
今天小編就為大家分享一篇vue單頁面應(yīng)用打開新窗口顯示跳轉(zhuǎn)頁面的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09vue+canvas實(shí)現(xiàn)簡易的九宮格手勢(shì)解鎖器
這篇文章主要為大家詳細(xì)介紹了如何流vue+canvas實(shí)現(xiàn)一個(gè)簡易的九宮格手勢(shì)解鎖器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09axios?發(fā)?post?請(qǐng)求,后端接收不到參數(shù)的完美解決方案
這篇文章主要介紹了axios?發(fā)?post?請(qǐng)求,后端接收不到參數(shù)的解決方案,場景很簡單,就是一個(gè)正常 axios post 請(qǐng)求,本文給大家分享問題原因分析及解決方案需要的朋友可以參考下2022-12-12vue2中,根據(jù)list的id進(jìn)入對(duì)應(yīng)的詳情頁并修改title方法
今天小編就為大家分享一篇vue2中,根據(jù)list的id進(jìn)入對(duì)應(yīng)的詳情頁并修改title方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08Vue實(shí)例的對(duì)象參數(shù)options的幾個(gè)常用選項(xiàng)詳解
今天小編就為大家分享一篇Vue實(shí)例的對(duì)象參數(shù)options的幾個(gè)常用選項(xiàng)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11構(gòu)建Vue大型應(yīng)用的10個(gè)最佳實(shí)踐(小結(jié))
這篇文章主要介紹了構(gòu)建Vue大型應(yīng)用的10個(gè)最佳實(shí)踐(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11