2017-09-27 92 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