亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JQuery搜索框自動補全(模糊匹配)功能實現示例

2019-11-19 12:18:44
字體:
來源:轉載
供稿:網友

本地實現了一個搜索框自動補全的小功能,在JQuery UI的autocomplete插件的基礎上,加入了自己的業務代碼,貼出來回顧一下,同時可以給大家一個參考

首先貼出的是JQuery Ui 的自動補全插件部分的代碼,后面的功能都是在其基礎上追加的,直接拷貝到你的本地就可以直觀的看到運行效果,也可以到官網上面體驗和查看,為了方便,我這里是直接引入的JS鏈接點擊下載JQuery UI的源碼

<!doctype html><html lang="en"><head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>jQuery UI Autocomplete - Default functionality</title> <link rel="stylesheet"  rel="external nofollow" rel="external nofollow" > <link rel="stylesheet" href="/resources/demos/style.css" rel="external nofollow" > <script src="https://code.jquery.com/jquery-1.12.4.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <script> $( function() {  var availableTags = [//這里要改成根據用戶的輸入,自動更換詞庫的形式   "ActionScript",   "AppleScript",   "Asp",   "BASIC",   "C",   "C++",   "Clojure",   "COBOL",   "ColdFusion",   "Erlang",   "Fortran",   "Groovy",   "Haskell",   "Java",   "JavaScript",   "Lisp",   "Perl",   "PHP",   "Python",   "Ruby",   "Scala",   "Scheme"  ];  $( "#tags" ).autocomplete({//調用補全功能   source: availableTags  }); } ); </script></head><body> <div class="ui-widget"> <label for="tags">Tags: </label> <input id="tags"></div> </body></html>

運行截圖

jquery-ui的自動補全功能截圖

下面說下我追加的部分功能及實現思路,有可以改進的地方還請指教:

1、首先,數據源要根據用戶輸入的內容實時更新.

輸入框的值隨著用戶的輸入會一直變動.所以,輸入框下方的推薦補全的內容要輸入的值進行變動,這里使用onkeyup屬性來監聽鍵盤動作,并傳遞此時input的value值到js函數中.

  //html  <input type="search" class="" id="tags" placeholder="搜索" required="" onkeyup="catch_keyword(this.value)">  //js代碼  function catch_keyword(word) {//這里接受并log出value    console.log(word);  }

2、第2步,考慮到數據庫中需要模糊檢索的字段都是中文的菜品名稱.所以,當用戶輸入字母的時候,進行了一下過濾,當輸入的內容中存在字母時,不提交給后臺處理

  //字符串判斷函數  //判斷一個字符串是否混有字母,全中文返回true  function isChn(str) {    var reg = /^[/u4E00-/u9FA5]+$/;    if (!reg.test(str)) {      return false;    } else {      return true;    }  }

3、發現當字符串中含有空格的時候,上面的字符串判斷函數,返回的內容不符合預期,然后加入了一個去除字符串中所有空格的功能

  //去掉字符串中任意位置的空格,返回去除空格后的字符串  function Trim(str, is_global) {    var result;    result = str.replace(/(^/s+)|(/s+$)/g, "");    if (is_global.toLowerCase() == "g") {      result = result.replace(//s/g, "");    }    return result;  }

4、處理結束用戶的輸入后,就是提交到后臺,然后返回數據源了,也就是availableTags;這里我把availableTags聲明為全局變量.并且用同步的Ajax方式取回數據,然后賦值給availableTags,然后在監聽鍵盤的函數中,使用返回的數據調用自動補全功能.

  //請求后端獲取數據源  function get_source(word = null) {    var url = "<?php echo base_url('admin/Demo/source');?>?keyword=" + word;    $.get({      type: 'GET',      url: url,      async: false,//改為同步      dataType: 'json',      success: function (response) {        console.log('1');        availableTags = response;      }    });  }

這里更新下最開始的接收監聽鍵盤后的value值的函數

  //捕捉鍵入的關鍵字  function catch_keyword(word = null) {    if (isChn(Trim(word, 'g'))) {//去掉空格后檢查字符串,如果符合,繼續請求后臺      get_source(word);      $("#tags").autocomplete({        source: availableTags //數據源      });    }  }

到這里,這個功能已經基本結束了,在測試過程中發現了一個小問題,每次第一次獲取用戶輸入的時候,自動補全功能沒有觸發,在用戶繼續輸入后,才觸發成功,經過調試,我在頁面加載完成后,初始化一下自動補全插件,解決了這個問題

6. 附:完整代碼

不知道如何在markdown中添加下載鏈接,只好把完整代碼放上來啦!

<!doctype html><html lang="en"><head>  <meta charset="utf-8">  <meta name="viewport" content="width=device-width, initial-scale=1">  <title></title>  <link rel="stylesheet" href="/jquery-weui-build/dist/lib/weui.min.css" rel="external nofollow" >  <link rel="stylesheet" href="/jquery-weui-build/dist/css/jquery-weui.css" rel="external nofollow" >  <link rel="stylesheet" href="/jquery-weui-build/demos/css/demos.css" rel="external nofollow" >  <link rel="stylesheet"  rel="external nofollow" rel="external nofollow" >  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>  <script src="/static/jquery-weui-build/dist/lib/fastclick.js"></script>  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>  <script>    $(function () {      FastClick.attach(document.body);    });  </script>  <script src="/jquery-weui-build/dist/js/jquery-weui.js"></script></head><body><div class="ui-widget">  <div class="weui-search-bar" id="searchBar">    <form class="weui-search-bar__form" action="#">      <div class="weui-search-bar__box">        <i class="weui-icon-search"></i>        <input type="search" class="weui-search-bar__input" id="tags" placeholder="搜索" required=""            onkeyup="catch_keyword(this.value)">        <a href="javascript:" rel="external nofollow" rel="external nofollow" class="weui-icon-clear" id="searchClear"></a>      </div>      <label class="weui-search-bar__label" id="searchText"          style="transform-origin: 0px 0px 0px; opacity: 1; transform: scale(1, 1);">        <i class="weui-icon-search"></i>        <span>搜索</span>      </label>    </form>    <a href="javascript:" rel="external nofollow" rel="external nofollow" class="weui-search-bar__cancel-btn" id="searchCancel">取消</a>  </div></div><script>  var availableTags = [];//數據源  //先初始化自動補全功能  $("#tags").autocomplete({    source: availableTags //數據源  });  //去掉字符串中任意位置的空格  function Trim(str, is_global) {    var result;    result = str.replace(/(^/s+)|(/s+$)/g, "");    if (is_global.toLowerCase() == "g") {      result = result.replace(//s/g, "");    }    return result;  }  //判斷字符串是否全是中文  function isChn(str) {    var reg = /^[/u4E00-/u9FA5]+$/;    if (!reg.test(str)) {      return false;    } else {      return true;    }  }  //捕捉鍵入的關鍵字  function catch_keyword(word = null) {    if (isChn(Trim(word, 'g'))) {      get_source(word);      $("#tags").autocomplete({        source: availableTags //數據源      });    }  }  //請求后端獲取數據源  function get_source(word = null) {    var url = "<?php echo base_url('admin/Demo/source');?>?keyword=" + word;    $.get({      type: 'GET',      url: url,      async: false,//改為同步      dataType: 'json',      success: function (response) {        console.log('1');        availableTags = response;      }    });  }</script></body></html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
y97精品国产97久久久久久| 午夜精品视频在线| 久久视频在线视频| 少妇高潮 亚洲精品| 日韩三级成人av网| 91成人福利在线| 色爱精品视频一区| 欧美日韩高清在线观看| 成人疯狂猛交xxx| 日韩有码在线视频| 亚洲欧美国产日韩中文字幕| 久久久99久久精品女同性| 在线观看91久久久久久| 日韩在线播放视频| 91久久国产精品| 91网站免费观看| 亚洲精品www久久久久久广东| 中文字幕亚洲字幕| 狠狠躁18三区二区一区| 7777精品视频| 亚洲精品国产精品国产自| 69视频在线免费观看| 日韩av大片免费看| 麻豆成人在线看| 国外视频精品毛片| 亚洲一区二区久久| 91香蕉嫩草影院入口| 欧美一级大片在线免费观看| 亚洲欧美另类国产| 欧美第一淫aaasss性| 日韩av电影国产| 性色av一区二区三区在线观看| 中文字幕欧美在线| 久久久久一本一区二区青青蜜月| 久久av在线看| 国产网站欧美日韩免费精品在线观看| 精品伊人久久97| 亚洲精品国产美女| 欧美亚洲国产日韩2020| 久久精品国产清自在天天线| 国产在线观看精品| 夜夜嗨av一区二区三区四区| 亚洲欧美综合另类中字| 高跟丝袜一区二区三区| 国产精品久久久久久久久粉嫩av| 一本色道久久综合狠狠躁篇怎么玩| 久久久国产成人精品| 亚洲欧美一区二区精品久久久| 午夜精品久久17c| 在线午夜精品自拍| 欧美日韩一区二区三区在线免费观看| 欧美精品videosex牲欧美| 麻豆国产精品va在线观看不卡| 俺也去精品视频在线观看| 国产精品一区二区久久久久| 久久久在线观看| 国产亚洲欧洲高清| 欧美日韩另类在线| 亚洲在线视频福利| 国产精品国产三级国产aⅴ浪潮| 91免费国产网站| 久久影视电视剧免费网站| 欧美日韩在线视频一区| 在线亚洲国产精品网| 亚洲成av人影院在线观看| 91亚洲精品一区二区| 国产精品极品尤物在线观看| 精品成人av一区| 国产丝袜精品视频| 操日韩av在线电影| 久久亚洲国产精品成人av秋霞| 国产精品一区专区欧美日韩| 欧美日韩国产999| 日韩一区二区久久久| 亚洲永久在线观看| 午夜精品久久17c| 国产精品99免视看9| 中文字幕欧美国内| 国产精品国产三级国产专播精品人| 中文在线资源观看视频网站免费不卡| 91国内免费在线视频| 欧美精品videos性欧美| 欧美劲爆第一页| 日韩高清欧美高清| 深夜精品寂寞黄网站在线观看| 国产精品免费视频xxxx| 国语对白做受69| 国产精品观看在线亚洲人成网| 在线亚洲午夜片av大片| 久久精品小视频| 国产一区二区三区三区在线观看| 日韩精品在线观看一区| 日韩av免费看网站| 最新日韩中文字幕| 欧美精品日韩三级| 97福利一区二区| 色噜噜狠狠狠综合曰曰曰88av| 日韩av快播网址| 亚洲最新中文字幕| 亚洲无亚洲人成网站77777| 亚洲精品在线观看www| 欧美成aaa人片免费看| 国产午夜精品久久久| 色樱桃影院亚洲精品影院| 欧美区二区三区| 欧美成aaa人片在线观看蜜臀| 亚洲影院高清在线| 国产日韩欧美在线播放| 国产精品久久网| 国产精品久久久久7777婷婷| 亚洲欧美中文日韩在线v日本| 日韩av在线一区| 久久久久久亚洲精品不卡| 亚洲欧洲午夜一线一品| 色系列之999| 亚洲男人天堂网站| 亚洲精品一区二三区不卡| 九九九热精品免费视频观看网站| 人九九综合九九宗合| 91色p视频在线| 色香阁99久久精品久久久| 欧美性生交大片免费| 国产在线观看精品| 亚洲国产成人久久综合一区| 久久久久久久影院| 国产欧美精品日韩精品| 国产精品欧美在线| 欧美影院在线播放| 中文字幕日韩av| 一区二区三区无码高清视频| 欧美精品videos另类日本| 亚洲美女www午夜| 欧美亚洲日本网站| 亚洲国产精品成人精品| 日本高清不卡的在线| 裸体女人亚洲精品一区| 日韩精品视频免费专区在线播放| 伊人亚洲福利一区二区三区| 成人国产精品免费视频| 亚洲黄在线观看| 伦伦影院午夜日韩欧美限制| 国产精品第100页| 色噜噜狠狠狠综合曰曰曰| 不卡在线观看电视剧完整版| 国产69久久精品成人| 在线观看中文字幕亚洲| 亚洲精品国产品国语在线| 97视频在线观看成人| 日韩av网站大全| 国产精品日韩久久久久| 亚洲第一精品夜夜躁人人躁| 日韩有码在线观看| 91精品国产91| 最近2019中文字幕一页二页| 国产精品揄拍一区二区| 欧美一区二区三区免费视| 日本中文字幕成人| 亚洲视频精品在线| 亚洲新声在线观看| 精品久久久久久中文字幕| 久久中文久久字幕| 欧美激情二区三区| 亚洲精品白浆高清久久久久久| 欧美午夜激情小视频|