2017-09-27 72 views
2

我知道这方面有很多疑问,但我的问题稍有不同。由于关闭页面单击,jquery事件触发了两次?

我有这必将对使用

$('body').on('blur', '#fielda, #fieldb, #fieldc, #fieldd', function(){ 
    alert ('hello') 
}); 

一个几个输入字段如果我在fielda单击输入值,然后单击出来,我得到一个警报,

然而

如果我点击进入fielda,然后点击另一个不在我的浏览器中的应用程序触发第一个警报,我清除它,然后得到一个新的警报。

我该如何阻止这种情况发生。 我已经设置了一个简单的fiddle来展示这一点。

由于

+0

对我来说(丁目的Windows上最新发布版本),其不火的两倍,它只是不断射击,直到你关闭该窗口。 – DBS

+0

你可以使用焦点事件来中断任何事件,当你进入一个领域时 – Manticore

回答

1

尝试document.hasFocus()

Document.hasFocus()该方法返回一个Boolean值指示 文档内的文档或任何元素是否具有焦点。 此方法可用于确定 文档中的活动元素是否具有焦点。

$('body').on('blur', '#fielda', function() { 
 
    if (document.hasFocus()) { 
 
    alert('hello') 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="fielda" />

+0

谢谢,这似乎有助于这个演示,我会在我的脚本尝试它,并报告回来。 – Tom

+0

感谢您排序:) – Tom