中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js如何實現帶搜索功能的下拉框

發布時間:2021-04-19 10:11:53 來源:億速云 閱讀:943 作者:小新 欄目:web開發

這篇文章給大家分享的是有關js如何實現帶搜索功能的下拉框的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

1、介紹

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

2、思路

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

js如何實現帶搜索功能的下拉框

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

3 對紅色區域的div設置點擊事件,利用事件委托將點擊的p標簽的值賦值到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()" >
   <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的數據
   var childs = dataList.children; //在IE下注釋也算節點,不能用于
   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('暫無數據');
    p.style.color = '#d7d7d7';
    p.onclick = function () { event.stopImmediatePropagation(); } //阻止事件的冒泡
    p.appendChild(text);
    dataList.appendChild(p);
   }
  }
  function pushInput() { //利用事件委托機制,獲取點擊的P源
   var e = event.target || event.srcElement;
   var input = document.getElementById('input');
   input.value = e.innerText;
   dataList.style.display = 'none';
  }
/**
 stopImmediatePropagation() 和 stopPropagation()的區別在哪兒呢?
  后者只會阻止冒泡或者是捕獲。 但是前者除此之外還會阻止該元素的其他事件發生,但是后者就不會阻止其他事件的發生
 **/
 </script>
</body>
</html>

感謝各位的閱讀!關于“js如何實現帶搜索功能的下拉框”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

苗栗市| 娄底市| 呼玛县| 扬中市| 独山县| 达孜县| 竹北市| 庄浪县| 阳山县| 商水县| 烟台市| 高淳县| 广平县| 航空| 荣昌县| 土默特右旗| 甘肃省| 石阡县| 栾川县| 元朗区| 杭锦后旗| 丰城市| 凤城市| 开阳县| 临潭县| 揭东县| 富宁县| 平乡县| 卢龙县| 承德市| 吕梁市| 佛学| 长白| 盐边县| 福州市| 海阳市| 和林格尔县| 上杭县| 杭州市| 天水市| 红原县|