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

js實現(xiàn)帶搜索功能的下拉框

 更新時間:2020年01月11日 13:13:48   作者:夢想就是大神  
這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)到搜索的下拉框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了js實現(xiàn)帶搜索功能的下拉框,供大家參考,具體內(nèi)容如下

1、介紹

在實現(xiàn)下拉框的時候,如果用select+option可以在滿足pc端的需求,但如果需應(yīng)用到手機(jī)端,由于select的樣式太丑。所以接下來利用div+p實現(xiàn)到輸入文本的下拉框

2、思路

1 利用一個input充當(dāng)搜索框,div+p充當(dāng)下拉框放置于input的下方。如圖所示:

2 接下來就是js的實現(xiàn)了,我們先把紅色區(qū)域的div+p利用display:none隱藏起來。
對表單input添加onfocus事件,當(dāng)input獲取焦點的時候獲取顯示紅色區(qū)域。
在對表單添加oninput事件,根據(jù)input的字段篩選出有關(guān)的p標(biāo)簽即可

3 對紅色區(qū)域的div設(shè)置點擊事件,利用事件委托將點擊的p標(biāo)簽的值賦值到input上即可。

3、代碼

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
</head>
<style>
 *{
  margin: 0;
  padding: 0;
 }
 .search{
  border: 1px solid transparent;
  width: 400px;
  height: 80px;
  margin: 0 auto;
 }
 .search input{
  border: 1px solid gray;
  width: 200px;
  height: 80px;
 }
 .content{
  width: 200px;
 /* height: 80px; */
  border: 1px solid red;
  overflow-y: auto;
  max-height: 60px;
 }
 .content p {
  height: 20px;
 }
</style>
<body onload="onload()">
 <div class="search">
  <input id="input" type="text" placeholder="請輸入" onfocus="showDiv()" oninput="filterP()">
  <div id="dataList" class="content" onclick="pushInput()" style="display:none;">
   <p>123</p>
   <p>159</p>
   <p>147</p>
   <p>163</p>
  </div>
 </div>
 <script>
  var dataArr = [];
  var dataList = document.getElementById('dataList');
  function onload() { //初始化dataArr的數(shù)據(jù)
   var childs = dataList.children; //在IE下注釋也算節(jié)點,不能用于
   for (var i = 0; i < childs.length; i++) {
    dataArr.push(childs[i].innerText);
   }
   console.log(dataArr);
  }
  function showDiv() {
   dataList.style.display = "";
  }
  function filterP() {
   var e = event.target || event.srcElement;
   var str = e.value;
   console.log(str);
   dataList.innerHTML = ''; //清空div下的所有P元素
   dataArr.forEach(function (item) {
    if (item.indexOf(str) != -1) {
     var p = document.createElement('p');
     var text = document.createTextNode(item);
     p.appendChild(text);
     dataList.appendChild(p);
    }
   })
   console.log("dataList.innerHTML:" + dataList.innerHTML)
   if (dataList.innerHTML == '') {
    var p = document.createElement('p');
    var text = document.createTextNode('暫無數(shù)據(jù)');
    p.style.color = '#d7d7d7';
    p.onclick = function () { event.stopImmediatePropagation(); } //阻止事件的冒泡
    p.appendChild(text);
    dataList.appendChild(p);
   }
  }
  function pushInput() { //利用事件委托機(jī)制,獲取點擊的P源
   var e = event.target || event.srcElement;
   var input = document.getElementById('input');
   input.value = e.innerText;
   dataList.style.display = 'none';
  }
/**
 stopImmediatePropagation() 和 stopPropagation()的區(qū)別在哪兒呢?
  后者只會阻止冒泡或者是捕獲。 但是前者除此之外還會阻止該元素的其他事件發(fā)生,但是后者就不會阻止其他事件的發(fā)生
 **/
 </script>
</body>
</html>

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

相關(guān)文章

  • 詳解ES6 擴(kuò)展運算符的使用與注意事項

    詳解ES6 擴(kuò)展運算符的使用與注意事項

    擴(kuò)展運算符 (spread syntax) 是 ES6 提供的一種非常便捷的新語法,給我們操作數(shù)組和對象帶來了非常大的便利,我在很多文章中也提到了這個語法。但是其實擴(kuò)展運算符的用法還是比較多比較雜的,我用一篇文章來做一下總結(jié),梳理一下擴(kuò)展運算的語法和使用細(xì)節(jié)。
    2020-11-11
  • 利用JS實現(xiàn)一個同Excel表現(xiàn)的智能填充算法

    利用JS實現(xiàn)一個同Excel表現(xiàn)的智能填充算法

    這篇文章主要給大家介紹了關(guān)于利用JS實現(xiàn)一個同Excel表現(xiàn)的智能填充算法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 檢測一個函數(shù)是否是JavaScript原生函數(shù)的小技巧

    檢測一個函數(shù)是否是JavaScript原生函數(shù)的小技巧

    這篇文章主要介紹了檢測一個函數(shù)是否是JavaScript原生函數(shù)的小技巧,本文給出了兩種檢測方法,需要的朋友可以參考下
    2015-03-03
  • js?中以?...?為前綴的幾種用法詳解

    js?中以?...?為前綴的幾種用法詳解

    這篇文章主要為大家介紹了js?中以?...?為前綴的幾種用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 微信小程序教程系列之頁面跳轉(zhuǎn)和參數(shù)傳遞(6)

    微信小程序教程系列之頁面跳轉(zhuǎn)和參數(shù)傳遞(6)

    這篇文章主要為大家詳細(xì)介紹了微信小程序教程系列之頁面跳轉(zhuǎn)和參數(shù)傳遞,微信小程序提供了3種頁面跳轉(zhuǎn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 躲避這些會改變原數(shù)組JavaScript數(shù)組方法讓開發(fā)流暢無阻

    躲避這些會改變原數(shù)組JavaScript數(shù)組方法讓開發(fā)流暢無阻

    JavaScript中有些數(shù)組的操作方法并不符合我們預(yù)期,容易導(dǎo)致想象不到的結(jié)果,因此,為避免這種情況的發(fā)生,本文將介紹哪些原生數(shù)組方法能改變原數(shù)組以及我對于如何更好地使用數(shù)組方法的建議
    2023-05-05
  • js中AppendChild與insertBefore的用法詳細(xì)解析

    js中AppendChild與insertBefore的用法詳細(xì)解析

    這篇文章主要是對js中AppendChild與insertBefore的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • Bootstrap模態(tài)對話框的簡單使用

    Bootstrap模態(tài)對話框的簡單使用

    這篇文章主要為大家詳細(xì)介紹了Bootstrap模態(tài)對話框的簡單使用,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 詳解能在多種前端框架下使用的表格控件

    詳解能在多種前端框架下使用的表格控件

    表格控件是我們在開發(fā)中經(jīng)常要用到的控件。有沒有能夠在多種前端控件下都能使用的表格控件?最近研究發(fā)現(xiàn)Wijmo中的FlexGrid是一款不錯的表格控件,它能支持很多主流的框架。這里主要介紹在純JavaScript和AngularJS下FlexGrid的使用。
    2017-01-01
  • 整理JavaScript創(chuàng)建對象的八種方法

    整理JavaScript創(chuàng)建對象的八種方法

    JavaScript創(chuàng)建對象的方法有很多種,本文給大家介紹javascript創(chuàng)建對象的八種方法,對javascript創(chuàng)建對象感興趣的朋友可以參考下本篇文章
    2015-11-11

最新評論