select 下拉框 模糊查询

在网上看了几个demo,都不是很理想,索性自己写了一个,功能很简单,下拉框本不支持手动输入,使用input模拟下拉框,支持手动输入及页面级的模糊查询

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
  <style type="text/css">
    #selectText{
     width:180px;
    }
    #inputText{
     left: 9px;
        position: absolute;
    }
    #selectWrap{
     border: 1px solid #000000;
        width: 177px;
        display: none;
    }
    #selectWrap p {
     margin:0;
     padding:0;
      font-size: 14px;
     
    }
    .mouseOver_p{
     color:#fff;
     background: #000;
    }
  </style>
</head>
 
<body>
<div id="wrap">
 <select id="selectText" οnchange="checkSelect(this)">
  <option>1113y</option>
  <option>2224r</option>
  <option>444r</option>
  <option>55rtdsd</option>
  <option>444r</option>
  <option>qqq</option>
  <option>wwwww</option>
  <option>eee</option>
  <option>ft1234567890</option>
  <option>你好我在测试rqQ</option>
 </select>
    <input type="text" id="inputText" οnkeyup="checkInput(this)" />
    <div id="selectWrap"></div>
</div>
<script type="text/javascript">
     var optionArr=[];
         setCookie();
         
 function checkInput(obj){  
  var currentValue = obj.value;  
  var selectText = document.getElementById("selectText"); 
  var wrap = document.getElementById("wrap");
  var selectWrap = document.getElementById("selectWrap");
  var newArr=[''];
  if( currentValue==""){
   var cookie = getCookie();
               for(var i=0;i<cookie.length;i++){
                    newArr.push(cookie[i]);
                }  
   }else{
    optionArr.length = null;
    var allSelectOption = initSelectOption();
    for(var i=0;i<allSelectOption.length;i++){ 
             if(allSelectOption[i].indexOf(currentValue)>=0){
                 newArr.push(allSelectOption[i]);
                }
               } 
           if(newArr.length == 1){
       newArr.length = 0;    
      } 
          }
  selectWrap.innerHTML = "";
   var objP;
        for(i=0;i<newArr.length;i++){
                 objP = document.createElement("p");
                  objP.innerHTML=newArr[i];    
                  objP.setAttribute("onmouseover","objMouseOver(this)") ;
                  objP.setAttribute("onclick","objClick(this)") ;
                  objP.setAttribute("onmouseout","objMouseOut(this)") ;
                  selectWrap.appendChild(objP);          
        } 
        wrap.appendChild(selectWrap); 
        document.all.selectWrap.style.display = "block";    
 }
 
  function checkSelect(obj){
     document.getElementById("inputText").value = obj.options[obj.selectedIndex].text;
     selectText.multiple = "";
  }
  
  function initSelectOption(){
    var selectText = document.getElementById("selectText"); 
    for(var i=0;i<selectText.children.length;i++){
     optionArr.push(selectText.children[i].text);
    }  
    return optionArr;
  }
  function setCookie(){
     document.cookie =initSelectOption();
  }
  function getCookie(){
   var cookie =document.cookie.split(","); 
   return cookie;
  }
  
  function objMouseOver(obj){
       obj.setAttribute("class","mouseOver_p")||obj.setAttribute("classname","mouseOver_p");
  }
   function objClick(obj){
    document.getElementById("inputText").value = obj.innerHTML;
     document.all.selectWrap.style.display = "none";   
  }
   function objMouseOut(obj){
      obj.setAttribute("class","")||obj.setAttribute("classname","");
  }
</script>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值