今天写一个输入框input,在输入框input获得焦点是显示一个下拉框select,而当这个输入框失去焦点时,隐藏这个下拉框,不过有个例外,就是焦点在下拉框上面,就不隐藏。所以我在input失去焦点是(点击的下拉框),判断获得焦点的是不是下拉框,如果是,就不隐藏,不是的话就隐藏。onBlur(){
        var act = document.activeElement.nodeName;
        console.log(act)        // this.hour.style.display='none'
        // this.min.style.display='none'
    }
然而在我点击下拉框是,按理说input输入框失去焦点是,获得焦点的是下拉框,可是控制台打印的却是body???
什么情况??

解决方案 »

  1.   

    ie浏览器没问题,Chrome9浏览器有一个焦点从body向下传递的过得。你可以延迟一下再获取activeElement
    <input type="text" onblur="onBlur()" />
    <select name="test">
    <option value="" selected="selected">1</option>
    <option value="">2</option>
    </select>
    <script type="text/javascript">
    function onBlur(){
    setTimeout(function(){
            var act = document.activeElement.nodeName;
            alert(act);
    }, 100);
        }
    </script>
      

  2.   

    <input list="list" />
    <datalist id="list">
        <option>test1</option>
        <option>2dawd</option>
        <option>jrtdf</option>
    </datalist>