1. 程式人生 > >Vue實現百度下拉提示搜尋

Vue實現百度下拉提示搜尋

一、前期準備

網上大神已經做過這個功能https://github.com/lavyun/vue-demo-search 這自己僅實現搜尋功能
為了使用百度實現搜尋功能,首先搞清楚下拉資料和搜尋功能的資料介面
01:提示資料獲取地址
開啟百度官網開啟開發者除錯工具,選中network一項,然後我們在搜尋框輸入'a',將會network傳送的請求,這個就是提示資料的資料獲取地址

1240
提示資料獲取地址.png


然後簡化一下:

https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=a&cb=jQuery110208352732182923484_1497924041050&_=1497924041057#

其中“wd=”後接搜尋的關鍵字,“cb=”後接回撥函式

1240
輸入a時,請求的提示資料


02:搜尋功能實現地址
在輸入框中輸入“a”之後,點選搜尋按鈕之後,位址列中地址就是實現搜尋功能的地址

1240
搜尋地址.png


搜尋地址簡化前後對比,是不是看起來很舒服了O(∩_∩)O

1240
簡化地址.png


我們使用簡化之後的地址,搜尋關鍵字“s‘’測試一下

1240
測試.png

二、程式碼實現

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="請輸入想要搜尋關鍵字" 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">(*^__^*)暫時沒有資料</h2></p>
</div>

get方法實現獲取下拉資料和搜尋功能,輸入keyword之後,呼叫get方法使用jsonp獲取提示資料,然後賦值給myData,然後使用v-for遍歷提示資料

1240
提示資料.png

三、實現效果

strip
效果.gif

相關推薦

Vue實現提示搜尋

一、前期準備 網上大神已經做過這個功能https://github.com/lavyun/vue-demo-search 這自己僅實現搜尋功能為了使用百度實現搜尋功能,首先搞

vue實現選單

在我們學習ajax的時候一定要做的例子就是下拉選單了吧?為什麼?因為當你輸入一個值的時候下面的div裡面會無重新整理的去加入資料,當時的實現也是挺難的,反正比下面的vue實現難。。。下面我們來看看vu

ajax實現

使用Ajax實現此效果1.準備資料的serlvetpublic class SelectServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, Http

如何使用jquery的jsonp實現仿列表

script chang charset 名稱 allow con 默認 cati 獲得 使用了mui布局,可以換布局,這個不重要,重要的是怎麽實現的 <!doctype html> <html> <head> <me

vue的jsonp菜單

菜單 win jsonp hang 請求 下拉菜單 bsp tps col 通過vue的jsonp實現百度下拉菜單的請求,vue的版本是2.9.2 1 <!DOCTYPE html> 2 <html lang="en"> 3 <

智能搜索提示

true 記錄 off btn data 百度 rip script tle 此案例使用的時ajax技術實現百度下拉,其中有利用jsonp解決跨域的問題,目前剛接觸到ajax技術,在這裏分享記錄一下學習的痕跡!<!doctype html><html la

Vue.js模擬

event NPU data resource prevent text eve set bubuko 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta c

vue

window.onload=function(){ new Vue({ el:'body', data:{ myData:[],

案例:實現搜索提示

分析:在輸入框中輸入詞彙後,提示出以該關鍵字開頭的存在資料庫中的記錄 一、搭建環境 1、定義首頁 <body> <center> <input type="text" name="word" id="word" style="width: 600

SEO【集】實現右側排名相關搜尋全攻略

早在幾年前,百度搜尋引擎介面就在搜尋詞介面的右側增加了符合特定搜尋條件的相關品牌,相關人物,相關企業等的推薦展示,這是百度知心演算

文字框提示效果(模擬效果提示框)

實現思想:當用戶在文字框中輸入時,可以利用ajax方式將文字框內內容傳給後臺的實現類,在實現類中經過處理後將產生的結果獲取過來在前臺呈現。具體操作可通過ajax將文字框的值通過ajax實現框架傳遞給系統後端獲得提示結果集,然後在文字框下側一下拉框的效果顯示出來供使用者選擇。

vue實現地圖拖拽地圖定位功能

.com 元素 偏移量 locals 進行 函數 nco 查看 page 效果如果所示,拖動地圖。中間圖標不動,並且自動獲取地圖當前中心點的經緯度。然後就可以用經緯度做其他的操作了。。。首先查看了百度地圖的api。能實現這個功能最貼近的就是marker。marker

常見的搜尋提示

  像我們用百度搜索打一個"你"字,就會彈出"你到底有沒有愛過我"還有"你是我的小蘋果" 等等,這些都是下拉框模糊匹配。 那麼模糊匹配下拉框是如何實現的呢? 下面我寫了個Demo簡單總結下: <html> <head> <meta chars

實現搜索框提示語功能

利用百度jsonp介面實現搜尋提示語. jsonp.js封裝 function jsonp(url, options) { // 建立script標籤 var $script = document.createElement('script'); // 解決快取問題

原生AJAX+jsp+servlet實現搜索框提示效果

我們這裡使用HTML5的新特性datalist實現輸入框的自動下拉提示,用datalist通過id與input關聯起來,在搜尋時就會出現下拉框。下面是HTML程式碼。   <!-- 輸入框 --> <input type="text" size="50" id="sear

bootstrap-select外掛實現搜尋功能

工作上要用到在下拉框內實現搜尋功能,原生的select標籤是不能輸入的,所以最終找到了bootstrap-select外掛,功能十分強大,支援搜尋,多選,分組選中等。 本文摘取自: 官方文件 簡單示例 下面先附上我的程式碼,實現了搜尋功能,

Ajax && Jquery&&搜索提示&&JQuery實現省市聯動

                                          &nb

JQuery條件使用 JS方式實現地圖載入資料庫中的座標並實現動態重新整理

功能:藉助JQuery,使用 JS 方式實現後臺載入座標資料然後顯示在百度地圖上,並每隔5秒重新整理一次資料。 對不同點使用不同的圖示進行標註,比如上傳時間大於半小時的點標記為紅色圖示,說明資料不實時, 對上傳時間短於半小時的,則用綠色的點表示正在運動的目標,藍色的點表示靜

ASP.NET實驗五:實現輸入內容提示的功能(仿google_輸入框提示

實驗:        對input控制元件實現輸入內容提示功能(仿google_百度輸入框提示功能) 目的:        優化網頁互動性,學習jquery的部分操作。 知識背景:        利用jquery中的jquery.ui.autocomplete.js外掛。

(1)python+selenium第一個自動化指令碼:實現開啟首頁並搜尋selenium

一、第一個自動化指令碼:實現開啟百度首頁並搜尋”selenium”#coding=utf-8 #為防止亂碼,編碼為utf-8 from selenium import webdriver #匯入selenum的webdriver包 driver.find_