2013-01-02 72 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