整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          自動完成autoComplete

          檢測當鍵盤up鍵被按下的時候,遍歷結果數(shù)據(jù),判斷是否被選中,如果沒有被選中,則選中后一個,如果有被選中的元素,則選擇上一個元素并賦值給input,如果選中的元素是第一個孩子節(jié)點則跳到后一個選中,如果彈出層沒有顯示則執(zhí)行插入操作,并顯示彈出層,down鍵被按下,原理同up鍵,如果按下的鍵既不是up又不是down那么直接去匹配數(shù)據(jù)并插入,這個延遲處理是因為如果失去焦點的時候是點擊選中數(shù)據(jù)的時候會發(fā)現(xiàn)先無法觸發(fā)點擊事件。對彈出層li元素綁定采用onmouseover,在li元素還沒有加載的時候就綁定這個方法,通過判斷target是否是li元素進行處理,也沒有寫addClass方法,直接賦值了
          <script type="text/javascript">
          (autoComplete={
          pop_len:10,
          pop_cn:'autoDis',
          hover_cn:'cur',
          source:'13612345564|13825646464|13412236054|13012348564|13012345564|13012365564|1111111111.split('|'),
          init:function(){
          this.setDom();
          return this;
          },
          bind:function(x){
          if(x.getAttribute('type') != 'text' || x.nodeName != 'INPUT')
          return null;
          var self = this;
          x.onkeyup = function(e){
          e = e || window.event;
          var lis = self.pop.getElementsByTagName('li'),lens = self.pop.getElementsByTagName('li').length,n=lens,temp;
          if(e.keyCode == 38){                                        //鍵盤up鍵被按下
          if(self.pop.style.display != 'none'){
          for(var i=0;i<lens;i++){                            //遍歷結果數(shù)據(jù),判斷是否被選中
          if(lis[i].className)
          temp = i;
          else
          n--;
          }
          if(n==0){                                                //如果沒有被選中的li元素,則選中后一個
          lis[lens-1].className = self.hover_cn;
          this.value = lis[lens-1].innerHTML;
          }else{                                                    //如果有被選中的元素,則選擇上一個元素并賦值給input
          if(lis[temp] == lis[0]){                        //如果選中的元素是第一個孩子節(jié)點則跳到后一個選中
          lis[lens-1].className = self.hover_cn;
          this.value = lis[lens-1].innerHTML;
          lis[temp].className = '';
          }else{
          lis[temp-1].className = self.hover_cn;
          this.value = lis[temp-1].innerHTML;
          lis[temp].className = '';
          }
          }
          }else                                                //如果彈出層沒有顯示則執(zhí)行插入操作,并顯示彈出層
          self.insert(this);
          }else if(e.keyCode == 40){                     //down鍵被按下,原理同up鍵
          if(self.pop.style.display != 'none'){
          for(var i=0;i<lens;i++){
          if(lis[i].className)
          temp = i;
          else
          n--;
          }
          if(n==0){
          lis[0].className = self.hover_cn;
          this.value = lis[0].innerHTML;
          }else{
          if(lis[temp] == lis[lens-1]){
          lis[0].className = self.hover_cn;
          this.value = lis[0].innerHTML;
          lis[temp].className = '';
          }else{
          lis[temp+1].className = self.hover_cn;
          this.value = lis[temp+1].innerHTML;
          lis[temp].className = '';
          }
          }
          }else
          self.insert(this);
          }else                                    //如果按下的鍵既不是up又不是down那么直接去匹配數(shù)據(jù)并插入
          self.insert(this);
          };
          x.onblur = function(){                //這個延遲處理是因為如果失去焦點的時候是點擊選中數(shù)據(jù)的時候會發(fā)現(xiàn)先無法觸發(fā)點擊事件
          setTimeout(function(){self.pop.style.display='none';},300);
          };
          return this;
          },
          setDom:function(){
          var self = this;
          var dom = document.createElement('div'),frame=document.createElement('iframe'),ul=document.createElement('ul');
          document.body.appendChild(dom);
          with(frame){                                    //用來在ie6下遮住select元素
          setAttribute('frameborder','0');
          setAttribute('scrolling','no');
          style.cssText='z-index:-1;position:absolute;left:0;top:0;'
          }
          with(dom){                                        //對彈出層li元素綁定onmouseover,onmouseover
          className = this.pop_cn;
          appendChild(frame);
          appendChild(ul);
          onmouseover  = function(e){            //在li元素還沒有加載的時候就綁定這個方法,通過判斷target是否是li元素進行處理
          e = e || window.event;
          var target = e.srcElement || e.target;
          if(target.tagName == 'LI'){            //添加樣式前先把所有的li樣式去掉,這里用的是一種偷懶的方式,沒有單獨寫removeClass方法
          for(var i=0,lis=self.pop.getElementsByTagName('li');i<lis.length;i++)
          lis[i].className = '';
          target.className=self.hover_cn;        //也沒有寫addClass方法,直接賦值了
          }
          };
          onmouseout = function(e){
          e = e || window.event;
          var target = e.srcElement || e.target;
          if(target.tagName == 'LI')
          target.className='';
          };
          }
          this.pop = dom;
          },
          insert:function(self){
          var bak = [],s,li=[],left=0,top=0,val=self.value;
          for(var i=0,leng=this.source.length;i<leng;i++){         //判斷input的數(shù)據(jù)是否與數(shù)據(jù)源里的數(shù)據(jù)一致
          if(!!val&&val.length<=this.source[i].length&& this.source[i].substr(0,val.length) == val){
          bak.push(this.source[i]);
          }
          }
          if(bak.length == 0){                                                    //如果沒有匹配的數(shù)據(jù)則隱藏彈出層
          this.pop.style.display='none';
          return false;
          }//這個彈出層定位方法之前也是用循環(huán)offsetParent,但發(fā)現(xiàn)ie跟ff下差別很大(可能是使用方式不當),所以改用這個getBoundingClientRect
          left=self.getBoundingClientRect().left+document.documentElement.scrollLeft;
          top=self.getBoundingClientRect().top+document.documentElement.scrollTop+self.offsetHeight;
          with(this.pop){
          style.cssText = 'width:'+self.offsetWidth+'px;'+'position:absolute;left:'+left+'px;top:'+top+'px;display:none;';
          getElementsByTagName('iframe')[0].setAttribute('width',self.offsetWidth);
          getElementsByTagName('iframe')[0].setAttribute('height',self.offsetHeight);
          onclick = function(e){
          e = e || window.event;
          var target = e.srcElement || e.target;
          if(target.tagName == 'LI')
          self.value = target.innerHTML;
          this.style.display='none';
          };
          }
          s = bak.length>this.pop_len?this.pop_len:bak.length;
          for(var i=0;i<s;i++)
          li.push( '<li>' + bak[i] +'</li>');
          this.pop.getElementsByTagName('ul')[0].innerHTML = li.join('');
          this.pop.style.display='block';
          }
          }).init().bind(document.getElementById('autoCom')).bind(document.getElementById('autoC'));
          </script>
          了解更多內(nèi)容:請訪問:雨點網(wǎng)絡   石家莊網(wǎng)站制作   石家莊網(wǎng)站建設 
           

          主站蜘蛛池模板: 午夜性色一区二区三区不卡视频 | 久99精品视频在线观看婷亚洲片国产一区一级在线 | 末成年女A∨片一区二区| 亚洲视频在线观看一区| 中文字幕不卡一区| 无码欧精品亚洲日韩一区| 日本一区二区三区中文字幕| 无码喷水一区二区浪潮AV| av无码人妻一区二区三区牛牛| 国产vr一区二区在线观看| 日本在线视频一区| 精品国产精品久久一区免费式 | 无码国产精品一区二区免费| 亚洲欧美日韩中文字幕在线一区| 亚洲AV无码一区二区三区电影 | 日本激情一区二区三区| 国产高清精品一区| 亚洲综合色一区二区三区小说| 国产激情一区二区三区在线观看 | 亚洲AV福利天堂一区二区三| 国产一区麻豆剧传媒果冻精品| 精品福利一区3d动漫| 国产伦精品一区二区三区免费迷| 久久中文字幕无码一区二区| 少妇一晚三次一区二区三区| 中日韩精品无码一区二区三区| 韩国福利一区二区美女视频| 国产婷婷色一区二区三区| 国产成人久久一区二区不卡三区| 国产成人一区二区三区免费视频| 中文字幕在线精品视频入口一区| 国产在线精品一区二区不卡| 国产成人精品一区在线| 区三区激情福利综合中文字幕在线一区| 精品国产一区二区22| 91在线一区二区| 竹菊影视欧美日韩一区二区三区四区五区 | 亚洲无线码在线一区观看| 久久久精品日本一区二区三区| 久久国产三级无码一区二区| 亚洲乱码国产一区三区|