2013-01-02 120 views
2

我遇到了問題。我正在使用jQuery 1.8.2。我想對焦點事件作出反應,並將焦點重置爲在特殊情況下留下的元素。現在,我得到這個非常簡單的codesnippet它獲取在Safari中存在的環捕獲,我不明白爲什麼會這樣...也許你能幫助我,這裏是一個非常簡單的例子:聚焦事件循環

JS:

$("#test").focusout(function() { 
    alert("FocusOut event got triggered."); 
    $("#test").focus(); 
});​ 

HTML:

<input type="text" id="test" />​ 

也許你想嘗試這個演示: http://jsfiddle.net/ds38v/3/只需點擊進入該輸入框,然後再次離開。

+0

你是什麼意思「陷入循環」?您使用的是Safari的哪個版本和操作系統? –

+0

回調被稱爲agin,並一次又一次... Mac OS 10.8.2 - Safari 6.0.2 – tmuecksch

+1

您是否嘗試過使用console.log()而不是alert()? –

回答

3

這個問題有一些瀏覽器的差異。因此,使用超時以「模擬」它就像一個「leaveFocus」 - 事後又一個「焦點」 - 活動:

$("#test").focusout(function() { 
    window.setTimeout(function() { 
     $("#test").focus(); 
    },1); 
});​ 

喜歡這個的工作。

我希望它有幫助...

+0

@tmuecksch,這個怎麼不起作用? – Alexander

+0

我很抱歉。事實上:你的解決方案工作得很好。我只是把警告框放在錯誤的地方。我把它放在下一個焦點在超時回調。在設置超時之前調用警報就可以實現。感謝您的幫助人。 – tmuecksch

+0

@tmuecksch,這不是我的答案。但是,這是顯而易見的 – Alexander