JavaScript组件开发之输入框加候选框的示例分析-创新互联

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

创新互联公司2013年至今,是专业互联网技术服务公司,拥有项目网站设计、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元齐齐哈尔做网站,已为上家服务,为齐齐哈尔各地企业和个人服务,联系电话:18982081108

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组件开发之输入框加候选框的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联网站建设公司行业资讯频道!

    另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


    当前名称:JavaScript组件开发之输入框加候选框的示例分析-创新互联
    文章链接:http://pwwzsj.com/article/cdejoe.html

    其他资讯