qq_41896159
倾城之恋墨攻
采纳率40%
2019-06-27 11:01 浏览 871

如何解决在IE中input获得焦点后,拖动其他div的滚动条不触发input的失去焦点事件?

20

在谷歌,或者火狐浏览器中当输入框获得焦点,拖动其他div的输入框不会触发input的失去焦点事件,但是在IE中会触发,请问如何解决?
想要的效果是当我输入框获得焦点展示div时,拖动div的滚动条不要触发失去焦点事件,div仍能展示而不是被隐藏。

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
                list-style: none;
            }

            #divshow {
                display: none;
                width: 200px;
                height: 100px;
                overflow: hidden;
                overflow-y: auto;
            }

            #divinner {
                width: 200px;
                height: 400px;
                background-color: blueviolet;
            }

            .scrolls {
                height: 3000px;
                width: 500px;
                float: left;
            }

            #box {
                width: 600px;
                overflow: hidden;
                overflow-y: auto;
                height: 500px;
            }
        </style>
    </head>

    <body>
        <div id="box">
            <div class="scrolls">
                <input type="text" name="boxa" id="boxa" value="" />
                <div class="div1" id="divshow">
                    <div id="divinner">
                        这是里面的内容
                    </div>
                </div>
            </div>
        </div>

    </body>

</html>
<script type="text/javascript">
    var xx = document.all
    console.log(xx);
    var inp = document.getElementById("boxa");
    inp.onfocus = function() {
        document.getElementById("divshow").style.display = "block";
    }
    inp.onblur = function() {
        console.log("失去焦点");
        document.getElementById("divshow").style.display = "none";
    }
</script>
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答 默认 最新

  • 已采纳
    weixin_44188641 Acquainted_____ 2019-06-27 14:46

    <!DOCTYPE html>




    <br> * {<br> margin: 0;<br> padding: 0;<br> list-style: none;<br> }<br> #divshow {<br> display: none;<br> width: 200px;<br> height: 100px;<br> overflow: hidden;<br> overflow-y: auto;<br> }<br> #divinner {<br> width: 200px;<br> height: 400px;<br> background-color: blueviolet;<br> }<br>






    这是里面的内容




    var flag = 0; var inp = document.getElementById("boxa"); inp.onclick = function(ev) { var ev = ev || window.event; if(ev.stopPropagation) { //W3C阻止冒泡方法 ev.stopPropagation(); } else { ev.cancelBubble = true; //IE阻止冒泡方法 } }; inp.onfocus = function(ev) { flag = 1; console.log("inputfocus", flag); document.getElementById("divshow").style.display = "block"; }; inp.onblur = function() { flag = 0; console.log("失去焦点", flag); }; document.getElementById("divshow").onclick = function(ev) { var ev = ev || window.event; console.log(ev); console.log(ev.currentTarget); console.log(ev.srcElement); var clickElement=null; if (ev.currentTarget) { clickElement=ev.currentTarget; }else{ clickElement=ev.srcElement; } console.log(this); if (clickElement === this) { // flag = 1; // console.log("div", flag); flag = 0; console.log("div", flag); } if(ev.stopPropagation) { //W3C阻止冒泡方法 ev.stopPropagation(); } else { ev.cancelBubble = true; //IE阻止冒泡方法 } }; window.onclick = function() { console.log("click", flag); if (flag != 1) { document.getElementById("divshow").style.display = "none"; } flag = 0; };
    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2019-06-27 13:10

    这个你就需要用 浏览器 f12 去自己调试了

    点赞 评论 复制链接分享
  • monoplasty monoplasty 2019-06-27 13:42

    js有时候就是要针对不同的情况进行兼容. 你再对document 添加点击事件, 当其他地方点击了, 除了input, 然后让input 失去焦点就行了.

    点赞 评论 复制链接分享

相关推荐