倾城之恋墨攻 2019-06-27 11:01 采纳率: 100%
浏览 1046
已采纳

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

在谷歌,或者火狐浏览器中当输入框获得焦点,拖动其他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条回答 默认 最新

  • 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; };
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误