JavaScript组件开发之输入框加候选框的示例分析

这篇文章主要为大家展示了“JavaScript组件开发之输入框加候选框的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript组件开发之输入框加候选框的示例分析”这篇文章吧。

创新互联主要为客户提供服务项目涵盖了网页视觉设计、VI标志设计、成都营销网站建设、网站程序开发、HTML5响应式重庆网站建设公司手机网站开发、微商城、网站托管及成都网站维护、WEB系统开发、域名注册、国内外服务器租用、视频、平面设计、SEO优化排名。设计、前端、后端三个建站步骤的完善服务体系。一人跟踪测试的建站服务标准。已经为成都墙体彩绘行业客户提供了网站改版服务。

1.兼容ie8 主要是事件兼容

var EventUtil = {
   on:function(elem,type,handler){
    if(elem.addEventListener){
     elem.addEventListener(type,handler,false);
    }else if(elem.attachEvent){
     elem.attachEvent("on"+type,handler);
    }
   },
   getEvent:function(event){
    return event||window.event;
   },
   getTarget:function(event){
    return event.target||event.srcElement;
   },
   getCharCode:function(event){
    if(typeof event.handler == "number"){
     return event.charCode;
    }else{
     return event.keyCode;
    }
   }
  }

2.对于候选框里面的内容使用事件代理,以及点击空白处消失

EventUtil.on(document.body,'click',function(e){
   stopPropagation(e);
   if(EventUtil.getTarget(e).nodeName=='BODY'){
    datalist.style.visibility = 'hidden';
    datalist.innerHTML ='';
   }
   if(EventUtil.getTarget(e).nodeName == "LI"){
    input.value = EventUtil.getTarget(e).innerHTML;
    datalist.style.visibility = 'hidden';
    datalist.innerHTML ='';
   }
  })

3.兼容模式下的防止冒泡

 function stopPropagation(e){
   e = window.event||e;
   if(document.all){
    e.cancelBubble = true;
   }else{
    e.stopPropagation();
   }
  }

4.效果图

JavaScript组件开发之输入框加候选框的示例分析 

5.完整代码



 
  
  
  
   html,body{margin: 0;padding: 0;height: 100%;width: 100%;}
   input{
    width: 200px;
    border:1px solid grey;
    padding: 0 2px;
    line-height: 1.5rem;
    box-sizing: border-box;
    outline: none;
   }
   ul{
    margin:0;
    width: 200px;
    padding: 0;
    list-style: none;
    box-sizing: border-box;
    padding: 1px;
    border:1px solid;
    border-color: grey;
    visibility: hidden;
   }
   li{
    line-height: 1.5rem;
    padding: 0 0 0 1px;
   }
   li:hover{
    background-color: grey;
   }
   .section{
    top:30%;
    left:50%;
    position: absolute;
    margin-left: -100px;
   }
  
 
 
 
   
   
   
 
      var EventUtil = {    on:function(elem,type,handler){     if(elem.addEventListener){      elem.addEventListener(type,handler,false);     }else if(elem.attachEvent){      elem.attachEvent("on"+type,handler);     }    },    getEvent:function(event){     return event||window.event;    },    getTarget:function(event){     return event.target||event.srcElement;    },    getCharCode:function(event){     if(typeof event.handler == "number"){      return event.charCode;     }else{      return event.keyCode;     }    }   }   function stopPropagation(e){    e = window.event||e;    if(document.all){     e.cancelBubble = true;    }else{     e.stopPropagation();    }   }   var input = document.getElementById('search');   var datalist = document.getElementById('datalist');   var list_array = ['aa','aab','abc'];   function generatelist(array){    var _innerHTML = '';    for (var i = 0; i < array.length; i++) {     _innerHTML += '
  • '+array[i]+'
  • ';    }    datalist.innerHTML = _innerHTML;   }   function findInArray(s){    var filter_array = [];    if(s!=''){     for (var i = 0; i < list_array.length; i++) {      if(list_array[i].indexOf(s)===0){       filter_array.push(list_array[i])      }     }    }    return filter_array;   }   input.onkeyup = function(){    var new_array = findInArray(this.value);    generatelist(new_array);    if(new_array.length>0){     setTimeout(function(){datalist.style.visibility = 'visible';},0);    }else{     setTimeout(function(){datalist.style.visibility = 'hidden';},0);    }   }   EventUtil.on(document.body,'click',function(e){    stopPropagation(e);    if(EventUtil.getTarget(e).nodeName=='BODY'){     datalist.style.visibility = 'hidden';     datalist.innerHTML ='';    }    if(EventUtil.getTarget(e).nodeName == "LI"){     input.value = EventUtil.getTarget(e).innerHTML;     datalist.style.visibility = 'hidden';     datalist.innerHTML ='';    }   })  

    以上是“JavaScript组件开发之输入框加候选框的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


    本文题目:JavaScript组件开发之输入框加候选框的示例分析
    标题URL:http://myzitong.com/article/pgjseo.html

    其他资讯