最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

自動完成的搜索框javascript實現(xiàn)

 更新時間:2016年02月26日 10:50:10   作者:吳統(tǒng)威  
這篇文章主要介紹了自動完成的搜索框javascript實現(xiàn)代碼,感興趣的小伙伴們可以參考一下

在很多需要搜索的網站, 都會有一個自動完成的搜索框. 方便用戶查找他們想要的搜索詞. 幫助用戶快速找到自己想要的結果. 這種方式是比較友好的. 所以是比較提倡使用的.

我們這次就來實現(xiàn)這一效果. 我們通過兩篇文章來進行講解. 首先我們來完成界面的設計布局.

界面的HTML結構, 第一個少不了的是一個搜索框, 第二個就是搜索的點擊按鈕.

 <div class="search">
     <input type="text" value="">
     <button>搜索</button>
 </div>

這就是最簡單的搜索框的設計. 那CSS代碼怎么處理. 以前用得多的是使用float來進行處理, 然后給搜索框一個邊框,設置一個padding. 然后給按鈕去除邊框,設置一個背景. 這里我們使用flex布局方式. 這樣更簡便點. 不用考慮清除浮動效果.當然這里就要考慮兼容性問題了.

.search {
  display: inline-flex;
  height: 35px;
  margin: 50px auto;
  position: relative;
}
.search input {
  border: #eee 1px solid;
  background-color: #fff;
  outline: none;
  width: 200px;
  padding: 0 5px;
}
.search button {
  background-color: #ff3300;
  color: #fff;
  border: none;
  width: 80px;
}

這時候我們繼續(xù)往下考慮, 如果用戶輸入了關鍵詞, 那就得顯示一個列表的相關詞語. 那這時候我們需要加入一個詞語列表.
比如

<ul>
  <li><a href="#">武林外傳</a> </li>
  <li><a href="#">葵花寶典</a> </li>
  <li><a href="#">如來佛掌</a> </li>
  <li><a href="#">九陰白骨爪</a> </li>
</ul>

我們將這行代碼追加到.search的內容后面.然后設置CSS代碼, 我們設置他的最小寬度為.search寬度減去搜索按鈕的寬度.這樣就跟搜索框一樣寬.

.search ul {
  position: absolute;
  left: 0;
  top: 35px;
  border: #eee 1px solid;
  min-width: calc(100% - 80px);
  text-align: left;
}
.search ul a {
  display: block;
  padding: 5px;
}

這得在CSS代碼之前, 將默認的一些瀏覽器樣式清除.最后效果如下.

好了.下面我們完成JS的代碼控制.
我們來分析下, 其中的事件. 用戶在輸入框輸入文字后, 將輸入的文字與后臺數(shù)據(jù)做查詢, 查詢到后返回給客戶端, 然后將返回的數(shù)據(jù)顯示在數(shù)據(jù)列表下.

根據(jù)這個步驟, 我們首先是獲取輸入框標簽, 給這個標簽添加onkeyup事件

 var ele_key = document.getElementById("key");
 ele_key.onkeyup = function (e) {
   //處理事件
 }

這里我們模擬一個后臺數(shù)據(jù), 這里用數(shù)據(jù)來表示,然后加入一些數(shù)據(jù)

var data = ["編程的人", "武林外傳", "葵花寶典", "九陰白骨爪", "武林江湖", "will"];

后臺數(shù)據(jù)有了, 事件也添加了. 這時候我們對數(shù)據(jù)進行處理了.
首先是獲取用輸入的數(shù)據(jù), 來然后與后臺數(shù)據(jù)進行比較. 然后將比較后的數(shù)據(jù)保存在一個數(shù)據(jù)里面.

//定義一些數(shù)據(jù)
var data = ["編程的人", "武林外傳", "葵花寶典", "九陰白骨爪", "武林江湖", "will"];
var ele_key = document.getElementById("key");
ele_key.onkeyup = function (e) {

  var val = this.value;

  //獲取輸入框里匹配的數(shù)據(jù)
  var srdata = [];
  for (var i = 0; i < data.length; i++) {
    console.log(data[i].indexOf(val))
    if (val.trim().length > 0 && data[i].indexOf(val) > -1) {
       srdata.push(data[i]);
    }
  }

 }

繼續(xù)往下分析, 目前我們獲取到后臺查詢到的數(shù)據(jù)后, 那就得將這個數(shù)據(jù)顯示給用戶查看, 這里我們顯示在數(shù)據(jù)列表中.

//定義一些數(shù)據(jù)
var data = ["編程的人", "武林外傳", "葵花寶典", "九陰白骨爪", "武林江湖", "will"];
var ele_key = document.getElementById("key");
ele_key.onkeyup = function (e) {

  var val = this.value;

  //獲取輸入框里匹配的數(shù)據(jù)
  var srdata = [];
  for (var i = 0; i < data.length; i++) {
    console.log(data[i].indexOf(val))
    if (val.trim().length > 0 && data[i].indexOf(val) > -1) {
       srdata.push(data[i]);
    }
  }

 //獲取到的數(shù)據(jù)準備追加顯示, 前期要做的事情: 清空數(shù)據(jù),然后顯示數(shù)據(jù)列表,如果獲取到的數(shù)據(jù)為空,則不顯示
  var ele_datalist = document.getElementById("datalist");
  ele_datalist.style.visibility = "visible";
  ele_datalist.innerHTML = "";

  if (srdata.length == 0) {
    ele_datalist.style.visibility = "hidden";
  }

  //將搜索到的數(shù)據(jù)追加到顯示數(shù)據(jù)列表, 然后每一行加入點擊事件, 點擊后將數(shù)據(jù)放入搜索框內, 數(shù)據(jù)列表隱藏
  var self = this;
  for (var i = 0; i < srdata.length; i++) {
    var ele_li = document.createElement("li");
    var ele_a = document.createElement("a");
    ele_a.setAttribute("href", "javascript:;");
    ele_a.textContent = srdata[i];

    ele_a.onclick = function () {
       self.value = this.textContent;
      ele_datalist.style.visibility = "hidden";
    }


    ele_li.appendChild(ele_a);
    ele_datalist.appendChild(ele_li);
  }

 }

在添加數(shù)據(jù)到列表中時, 我們首先對數(shù)據(jù)列表做初始化處理,避免重復數(shù)據(jù)的添加. 其次就是我們給數(shù)據(jù)列表的每一行添加了一個點擊事件,點擊后將數(shù)據(jù)放入搜索框內, 數(shù)據(jù)列表隱藏.

在這里整個自動完成的搜索框就完成了.我們來測試下效果.

這里可能是錄制軟件問題, 邊框與它錄制的背景顏色應該一樣了. 邊框不見了(⊙﹏⊙)b
以上就是JAVASCRIPT實現(xiàn)搜索框的自動完成效果,大家可以自己測試玩玩!

相關文章

  • Javascript中的var_dump函數(shù)實現(xiàn)代碼

    Javascript中的var_dump函數(shù)實現(xiàn)代碼

    發(fā)現(xiàn)了一個非常好的JavaScript調試方法,目前看到的是可以打印Object/Array/Function/String四種類型,使用方法和PHP中的var_dump()一樣,只要直接dump(變量名)即可。
    2009-09-09
  • JS實現(xiàn)PC手機端和嵌入式滑動拼圖驗證碼三種效果

    JS實現(xiàn)PC手機端和嵌入式滑動拼圖驗證碼三種效果

    這篇文章主要介紹了JS實現(xiàn)PC手機端和嵌入式滑動拼圖驗證碼三種效果,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • Javascript圖片上傳前的本地預覽實例

    Javascript圖片上傳前的本地預覽實例

    圖片的上傳預覽功能主要用于圖片上傳前的一個效果的預覽,這篇文章主要介紹了Javascript圖片上傳前的本地預覽實例,需要的朋友可以參考下
    2014-06-06
  • window.open打開新頁面失效解決方案

    window.open打開新頁面失效解決方案

    這篇文章主要給大家介紹了關于window.open打開新頁面失效的解決方案,移動端和PC端全部通過window.open()來跳轉頁面窗口,文中給出了詳細的解決方案,需要的朋友可以參考下
    2023-07-07
  • zeroclipboard 單個復制按鈕和多個復制按鈕的實現(xiàn)方法

    zeroclipboard 單個復制按鈕和多個復制按鈕的實現(xiàn)方法

    最近網站改版想讓復制代碼功能在多個瀏覽器上都可以實現(xiàn),最近看網上不少說我們的代碼復制功能不好用的,我們最近將會增加代碼高亮等功能,希望大家多多支持我們
    2014-06-06
  • 一文讓你徹底搞清楚javascript中的require、import與export

    一文讓你徹底搞清楚javascript中的require、import與export

    這篇文章主要給大家介紹了關于javascript中require、import與export的相關資料,文中通過示例代碼介紹的非常詳細,對打擊大的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-09-09
  • JS截取字符串的方法詳解

    JS截取字符串的方法詳解

    本文詳細講解了JS截取字符串的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • 講兩件事:1.this指針的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件處理上的區(qū)別

    講兩件事:1.this指針的用法小探. 2.ie的attachEvent和firefox的addEventListene

    講兩件事:1.this指針的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件處理上的區(qū)別...
    2007-04-04
  • 表格展示利器 Bootstrap Table實例代碼

    表格展示利器 Bootstrap Table實例代碼

    在表格導出數(shù)據(jù)中,發(fā)現(xiàn)設置了分頁參數(shù),導出的數(shù)據(jù)僅為表格加載的分頁參數(shù)數(shù)據(jù),于是,針對這樣的情況,通過設置分頁參數(shù)的值,使表格可以加載更多的數(shù)據(jù),可達到導出所有數(shù)據(jù)的功能需求。下面通過本文給大家分享表格展示利器 Bootstrap Table
    2017-09-09
  • 純js實現(xiàn)背景圖片切換效果代碼

    純js實現(xiàn)背景圖片切換效果代碼

    現(xiàn)在純粹用js的人越來越少了,更多的人喜歡jquery,可使我還是喜歡javascript,下面給出一個用javascript寫的背景切換的小例子,各位大蝦不要罵,只是寫給自己看的,也供js事件的產考依據(jù)。
    2010-11-11

最新評論

东方市| 平陆县| 任丘市| 吉林省| 山西省| 三台县| 长葛市| 天镇县| 加查县| 福清市| 藁城市| 鞍山市| 遵义县| 包头市| 长岛县| 和静县| 瑞金市| 商城县| 宁南县| 综艺| 明光市| 罗平县| 基隆市| 凤山市| 鄱阳县| 洛宁县| 新化县| 康马县| 西林县| 新野县| 章丘市| 余姚市| 达拉特旗| 乌兰浩特市| 曲麻莱县| 临城县| 永寿县| 上高县| 阜平县| 永胜县| 达日县|