原生javascript實現的選取搜尋元件
-
程式碼:
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><link rel="stylesheet" href="less/index.css"><style> .select_text{ width:30%; height: 20px; padding: 8px; border-radius: 5px; color: grey; } .select_text:focus{ border-color: green; box-shadow: 0px 0 5px grey; } .select_span{ position: relative; left: -2%; cursor: pointer; } .select_ul{ display: none; width: 27%; padding: 25px; margin: 0; height: 25vh; border: 1px solid grey; overflow: auto; } .select_li:hover{ background: green; }</style></head><body> <div id="select_container"> </div><script>function select_search(id,arr,name){ var container = document.getElementById(id) var hidden = document.createElement('input') hidden.setAttribute('type','hidden') hidden.setAttribute('name',name) var text = document.createElement('input') text.setAttribute('type','text') text.setAttribute('class','select_text') var span = document.createElement('span') span.setAttribute('class','select_span') span.innerHTML = 'O' var ul = document.createElement('ul') ul.setAttribute('class','select_ul') container.appendChild(hidden) container.appendChild(text) container.appendChild(span) container.appendChild(ul) function getValue(arr){ var lis = '' for(var i=0;i<arr.length;i++){ lis += '<li class="select_li">'+arr[i].name+'</li>' } ul.innerHTML = lis } function searchValue(str,arr){ var retArray = new Array() if(str==''){ retArray = arr }else{ retArray = arr.filter(function(item){ var check = item.name.indexOf(str) if(check!=-1){ return item } }) } return retArray } function chooseValue(ele){ for(var i=0;i<ele.length;i++){ var prop = ele[i].getAttribute('class') if(prop.indexOf('select_li')!=-1){ ele[i].onclick = function(){ var val = this.innerHTML text.value = val } } } } function removeHide(){ ul.style.display = 'block' } function getHide(){ ul.style.display = 'none' } function triggerHide(){ var all = document.getElementsByTagName('*') var arr = new Array('select_text','select_span','select_ul','select_li') for(var i=0;i<all.length;i++){ all[i].onclick = function(e){ e.stopPropagation() e.preventDefault() var prop = this.getAttribute('class') var flag = false if(prop){ for(var j in arr){ var item = arr[j] if(prop.indexOf(item)!=-1){ flag = true break } } } if(!flag){ getHide() }else{ removeHide() } } } } triggerHide() text.onfocus = function(){ removeHide() var val = this.value var valArray = searchValue(val,arr) getValue(valArray) lis = document.getElementsByTagName('li') chooseValue(lis) } text.onkeyup = function(){ var val = this.value var valArray = searchValue(val,arr) getValue(valArray) lis = document.getElementsByTagName('li') chooseValue(lis) } span.onclick = function(e){ var val = text.value var valArray = searchValue(val,arr) getValue(valArray) lis = document.getElementsByTagName('li') chooseValue(lis) e.stopPropagation() e.preventDefault() var style = ul.style.display if(style=='block'){ getHide() }else{ removeHide() } }}var arr = new Array( { id:1, name:'a' }, { id:2, name:'b' }, { id:3, name:'c' }, { id:4, name:'aa' }, { id:5, name:'bb' }, { id:6, name:'cc' } ) select_search('select_container',arr)</script></body></html>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2035/viewspace-2817062/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 原生Javascript實現星星評分元件JavaScript元件
- javascript實現二叉搜尋樹JavaScript
- JavaScript 原生實現進度條元件.mdJavaScript元件
- 使用APICloud AVM多端元件快速實現app中的搜尋功能APICloud元件APP
- 原生Javascript實現BindJavaScript
- iview input實現點選和enter同時搜尋技巧View
- Elasticsearch搜尋功能的實現(五)-- 實戰Elasticsearch
- 點選搜尋框清空搜尋提示文字
- Elasticsearch 實現簡單搜尋Elasticsearch
- Laravel + Elasticsearch 實現中文搜尋LaravelElasticsearch
- Jquery + Bootstrap 實現搜尋框jQueryboot
- 使用原生javascript實現jquery的$(function(){ })JavaScriptjQueryFunction
- GetX 實現類似微信轉發搜尋多選好友
- vue2實現搜尋結果中的搜尋關鍵字高亮Vue
- 海量資料搜尋---demo展示百度、谷歌搜尋引擎的實現谷歌
- 圖的廣度優先搜尋和深度優先搜尋Python實現Python
- 從零開始實現一個顏色選擇器(原生JavaScript實現)JavaScript
- jsonp跨域獲取資料實現百度搜尋JSON跨域
- 二叉搜尋樹的python實現Python
- Sunday搜尋演算法實現演算法
- elasticsearch實現基於拼音搜尋Elasticsearch
- laravel8實現ES搜尋Laravel
- Python如何實現窮舉搜尋?Python
- 如何用Redis實現搜尋介面Redis
- JavaScript 二叉搜尋樹以及實現翻轉二叉樹JavaScript二叉樹
- 相見恨晚!開源的傻瓜搜尋引擎,幫你快速實現搜尋功能
- Redis 實戰 —— 10. 實現內容搜尋、定向廣告和職位搜尋Redis
- 【Django】組合條件的搜尋功能實現Django
- 二分搜尋演算法的實現演算法
- 手把手教你實現 Tree 元件搜尋過濾功能,乾貨滿滿!元件
- 【javascript實現】幾道題目帶你學習二叉搜尋樹JavaScript
- BM搜尋演算法C實現演算法
- 基於Elasticsearch實現搜尋建議Elasticsearch
- Java實現 LeetCode 35 搜尋插入位置JavaLeetCode
- 使用 Laravel Scout + ElasticSearch 實現全文搜尋LaravelElasticsearch
- CSS 實現搜尋相關互動CSS
- ionic2/ionic3 實現搜尋結果中的搜尋關鍵字高亮
- JavaScript原生實現樓梯外掛JavaScript