微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript组件开发之输入框加候选框

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

rush:js;"> 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.对于候选框里面的内容使用事件代理,以及点击空白处消失

rush:js;"> 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.兼容模式下的防止冒泡

rush:js;"> function stopPropagation(e){ e = window.event||e; if(document.all){ e.cancelBubble = true; }else{ e.stopPropagation(); } }

4.效果

这里写图片描述

5.完整代码

rush:js;"> <Meta charset="utf-8">

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐