欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于vue實現(xiàn)多引擎搜索及關(guān)鍵字提示

 更新時間:2017年03月16日 11:16:15   作者:Redchar  
這篇文章主要為大家詳細介紹了基于vue實現(xiàn)多引擎搜索及關(guān)鍵字提示的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了vue實現(xiàn)多引擎搜索及關(guān)鍵字提示的具體代碼,供大家參考,具體內(nèi)容如下

關(guān)鍵代碼:

<div class="header-search">
      <form id="form" action="http://m.baidu.com/s" method="get" accept-charset="utf-8" class="clearfix" autocomplete="off">
        <a>
          <span class="search-media"></span>
        </a>
        <input id="searchData" type="text" placeholder="搜索一下" name="word" @keyup="listenWords" @input="listenInput" @focus="listenInput" />
        <span class="del">×</span>
        <a @click="gotoSearch">
          <span class="icon-search icon-sign"></span>
        </a>
      </form>
    </div>
    <div id="pagesZone" class="clearfix">
      <div id="auto"></div>
      <span class="engi">快速搜索:</span>
      <img src="../../dist/images/google.png" alt="谷歌" id="googlePages" @click="gotoGoogle" >
      <img src="../../dist/images/bing.png" alt="必應(yīng)" id="bing" @click="gotoBing" >
      <img src="../../dist/images/zhihu.png" alt="知乎" id="zhihu" @click="gotoZhiHu" >
      <img src="../../dist/images/sogou.png" alt="搜狗" id="sogo" @click="gotoSogou" >
      <img src="../../dist/images/jd.png" alt="京東" id="jd" @click="gotoJD" >
      <a @click="close" class="close">關(guān)閉</a>
    </div>
fillUrls: function() {
        var that = this;
        var strdomin = document.getElementById("searchData").value;
        window.status = "請求中";
        this.$http.jsonp("http://suggestion.baidu.com/su", {  //請求參數(shù)
          params: {
           wd: strdomin
          },
          jsonp: 'cb'
        }).then(function(res){
          window.status = "請求結(jié)束";
          that.autoDisplay(JSON.parse(res.body).s);
        },function(){
          console.log("error");
        });
      },

      autoDisplay: function(autoStr) {
        var searchText = document.getElementById('searchData');
        var autoNode = document.getElementById('auto'); //緩存對象(彈出框)
        var that = this;
        var docWidth = document.body.clientWidth || document.documentElement.clientWidth;
        var pagesZone = document.getElementById('pagesZone');
        if (autoStr.length == 0) {
          console.log("false");
          autoNode.style.display = "none";
          return false;
        }
        autoNode.innerHTML = "";
        for (var i = 0; i < autoStr.length; i++) {
          //創(chuàng)建節(jié)點
          var wordNode = autoStr[i].replace(searchText.value,"<b>"+searchText.value+"</b>");
          var newDivNode = document.createElement('div');
          newDivNode.setAttribute("id",i);
          autoNode.appendChild(newDivNode);
          var wordSpanNode = document.createElement('span');
          wordSpanNode.setAttribute('class','suggText');
          wordSpanNode.innerHTML = wordNode;
          newDivNode.appendChild(wordSpanNode);
          var addNode = document.createElement('span');
          addNode.setAttribute('class','addText');
          addNode.innerHTML = '+';
          newDivNode.appendChild(addNode);
          //鼠標(biāo)點擊文字上屏并搜索
          wordSpanNode.onclick = function () {
            this.highlightindex = this.parentNode.getAttribute('id');
            var comText = autoNode.childNodes[this.highlightindex].firstChild.innerText;
            autoNode.style.display = "none";
            this.highlightindex = -1;
            searchText.value = comText;
            pagesZone.style.display = "none";
            that.gotoSearch();
          };
          //鼠標(biāo)點擊文字上屏
          addNode.onclick = function () {
            this.highlightindex = this.parentNode.getAttribute('id');
            var comText = autoNode.childNodes[this.highlightindex].firstChild.innerText;
            autoNode.style.display = "none";
            this.highlightindex = -1;
            searchText.value = comText;
          };
          //展示
          if (autoStr.length > 0) {
            autoNode.style.display = "block";
          } else {
            autoNode.style.display = "none";
            this.highlightindex = -1;
          }
          //針對手機豎屏?xí)r的顯示條數(shù)控制
          if (docWidth < 500 && i > 3) {
            break;
          }
        }
      },

      close: function() {
        document.getElementById('pagesZone').style.display = 'none';
      },

      listenWords: function(event) {
        console.log("listen keyup");
        var that = this;
        var searchInput = document.getElementById("searchData");
        event = window.event || event;
        if (event.keyCode == 13) {   // enter
          event.preventDefault();
          that.gotoSearch();
        }
        if (event.keyCode == 8) {   // backspace
          console.log(searchInput.value.length);
          if(searchInput.value.length == 0){
            searchInput.blur();
            searchInput.focus();
          }
        }
      },

      listenInput: function() {
        var that = this;
        var searchInput = document.getElementById("searchData");
        var auto = document.getElementById('auto');
        var pagesZone = document.getElementById('pagesZone');
        var del = document.getElementsByClassName('del')[0];
        if (searchInput.value == null || searchInput.value == "") {
          auto.innerHTML = "";
          pagesZone.style.display = "none";
          del.style.display = "none";
          auto.style.display = "none";
          return;
        }
        pagesZone.style.display = "block";
        del.style.display = "block";
        that.fillUrls();
        if (this.highlightindex != -1) {
          this.highlightindex = -1;
        }
      },

多引擎搜索很簡單,匹配對應(yīng)參數(shù)就好:

window.location. + document.getElementById("searchData").value;

百度:https://m.baidu.com/s?word=

谷歌:https://www.google.com/search?q=

必應(yīng):https://cn.bing.com/search?q=

知乎:https://m.zhihu.com/search?q=

搜狗:http://wap.sogou.com/web/searchList.jsp?keyword=

京東:http://so.m.jd.com/ware/search.action?keyword=

 關(guān)鍵字提示,先通過jsonp請求參數(shù):

var strdomin = document.getElementById("searchData").value;
        window.status = "請求中";
        this.$http.jsonp("http://suggestion.baidu.com/su", {  //請求參數(shù)
          params: {
           wd: strdomin
          },
          jsonp: 'cb'
        }).then(function(res){
          window.status = "請求結(jié)束";
          that.autoDisplay(JSON.parse(res.body).s);
        },function(){
          console.log("error");
        });

輸入框中有文字的時候觸發(fā)。

其中JSON.parse用于從一個字符串中解析出json對象。s是suggest words。這里傳到autoDisplay的參數(shù)即關(guān)鍵字提示。

另外將input元素的autocomplete屬性設(shè)置為off可以關(guān)閉自動提示:

<input type="text" name="name" autocomplete="off">

如果所有表單元素都不想使用自動提示功能,只需在表單form上設(shè)置autocomplete=off。

最后將獲取到的關(guān)鍵字提示放到input下面的節(jié)點中即可。

注意:

復(fù)制代碼 代碼如下:
<input id="searchData" type="text" placeholder="搜索一下" name="word" @keyup="listenWords" @input="listenInput" @focus="listenInput" />

這里因兼容問題綁定了3個事件,其中l(wèi)istenWords專門針對手機鍵盤的回車鍵和回退鍵:

listenWords: function(event) {
        console.log("listen keyup");
        var that = this;
        var searchInput = document.getElementById("searchData");
        event = window.event || event;
        if (event.keyCode == 13) {   // enter
          event.preventDefault();
          that.gotoSearch();
        }
        if (event.keyCode == 8) {   // backspace
          console.log(searchInput.value.length);
          if(searchInput.value.length == 0){
            searchInput.blur();
            searchInput.focus();
          }
        }
      },

如有更好的方式歡迎討論。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • VUE3基于vite封裝條形碼和二維碼組件的詳細過程

    VUE3基于vite封裝條形碼和二維碼組件的詳細過程

    基礎(chǔ)組件開發(fā)是項目業(yè)務(wù)開發(fā)的基石, 本文主要介紹了通過vue3的vite腳手架快速搭建項目, 開發(fā)條形碼和二維碼組件的過程,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • 基于Vue實現(xiàn)一個textarea幽靈建議功能

    基于Vue實現(xiàn)一個textarea幽靈建議功能

    不知道你有沒有發(fā)現(xiàn)Bing AI聊天有個輸入提示功能,在用戶輸入部分內(nèi)容時后面會給出灰色提示文案,用戶只要按下tab鍵就可以快速添加提示的后續(xù)內(nèi)容,我將這個功能稱為幽靈建議,接下來我將用Vue框架來實現(xiàn)這個功能,需要的朋友可以參考下
    2023-09-09
  • Vue+NodeJS實現(xiàn)大文件上傳的示例代碼

    Vue+NodeJS實現(xiàn)大文件上傳的示例代碼

    常見的文件上傳方式可能就是new一個FormData,把文件append進去以后post給后端就可以了。但如果采用這種方式來上傳大文件就很容易產(chǎn)生上傳超時的問題。所以本文將利用Vue+NodeJS實現(xiàn)大文件上傳,需要的可以參考一下
    2022-05-05
  • vue與原生app的對接交互的方法(混合開發(fā))

    vue與原生app的對接交互的方法(混合開發(fā))

    vue開發(fā)h5項目特別是移動端的項目,很多都是打包后掛載在原生APP上的,這篇文章主要介紹了vue與原生app的對接交互的方法,非常具有實用價值,需要的朋友可以參考下
    2018-11-11
  • 搭建vue3項目以及按需引入element-ui框架組件全過程

    搭建vue3項目以及按需引入element-ui框架組件全過程

    element是基于vue.js框架開發(fā)的快速搭建前端的UI框架,下面這篇文章主要給大家介紹了關(guān)于搭建vue3項目以及按需引入element-ui框架組件的相關(guān)資料,文中通過圖文以及代碼介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • vue使用stompjs實現(xiàn)mqtt消息推送通知

    vue使用stompjs實現(xiàn)mqtt消息推送通知

    這篇文章主要為大家詳細介紹了vue中使用stompjs實現(xiàn)mqtt消息推送通知,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Backbone前端框架核心及源碼解析

    Backbone前端框架核心及源碼解析

    這篇文章主要為大家介紹了Backbone前端框架核心及源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 初識 Vue.js 中的 *.Vue文件

    初識 Vue.js 中的 *.Vue文件

    vue.js是一套構(gòu)建用戶界面的漸進式框架,它采用自底向上增量開發(fā)的設(shè)計.這篇文章主要介紹了VueJs 填坑日記之初識 *.Vue文件,需要的朋友可以參考下
    2017-11-11
  • vuedraggable實現(xiàn)簡單拖拽功能

    vuedraggable實現(xiàn)簡單拖拽功能

    這篇文章主要為大家詳細介紹了vuedraggable實現(xiàn)拖拽功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 一文帶你搞懂Vue3的基本語法

    一文帶你搞懂Vue3的基本語法

    這篇文章主要給大家詳細介紹一下Vue3中的基本語法,文中的示例代碼講解詳細,對我們學(xué)習(xí)Vue3有一定的幫助,感興趣的小伙伴可以了解一下
    2022-11-11

最新評論