搜索

首页  >  问答  >  正文

javascript - 文本框onblur事件连续触发的问题

text标签 onblur="alert()"
文本框失去光标的时候触发alert();
但是当鼠标选中此text,然后鼠标离开整个浏览器窗口(比如点击下桌面),这样触发alert()事件
现在问题来了:
鼠标回到浏览器点击弹出的"确定"按钮后,弹窗继续弹出...
怎么搞?

漂亮男人漂亮男人2823 天前1101

全部回复(2)我来回复

  • 怪我咯

    怪我咯2017-05-19 10:15:27

    不会出现这个情况的,贴出你的代码。


    补充

    我能回答就肯定试过的啦下面代码就没有问题

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <input type="text" onblur="alert();">
    </body>
    </html>

    已经测试IE11 、 Firefox 、Chrome


    补充

    所描述的情况确实存在,想了下原因:

    切回去后窗口失去了焦点,再回来的时候,文本框又自动获取了焦点 所以一直继续,从而不断触发。

    这种问题实际在使用的时候出现情况应该比较少。 一种解决方案是在窗口失去焦点的时候让文本框也失去焦点如下:

    已测试问题解决

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <input type="text" onblur="alert();">
        <script>
            window.onblur=function(){
                document.getElementsByTagName('input')[0].blur();
            }
        </script>
    </body>
    </html>

    回复
    0
  • 黄舟

    黄舟2017-05-19 10:15:27

    刚刚试了下,确实有这个现象,但是把alert改成其他的(比如console.log)就不会出现反复触发 blur 的情况,一般情况下应该也不会用到alert,所以这个问题应该也不会有很大影响。至于为什么出现这种情况,我也不清楚~~

    回复
    0
  • 取消回复