JavaScript确认模糊/聚焦事件在某些操作系统上陷入无休止的循环';s

JavaScript确认模糊/聚焦事件在某些操作系统上陷入无休止的循环';s,javascript,jquery,confirm,Javascript,Jquery,Confirm,我有一个JavaScript确认框。以下是片段: $('#txtTestOne,#txtTestTwo')。关于('blur',函数(e){ var retval=confirm('你真的想去那里吗?'); 如果(!retval){ e、 target.focus(); }否则{ e、 relatedTarget.focus(); } }); 给你,伙计,我修好了。我在使用Chrome时也遇到了无限循环的问题,但我希望这在所有浏览器中都能像您所期望的那样工作 $('.input')。在('c

我有一个JavaScript确认框。以下是片段:

$('#txtTestOne,#txtTestTwo')。关于('blur',函数(e){
var retval=confirm('你真的想去那里吗?');
如果(!retval){
e、 target.focus();
}否则{
e、 relatedTarget.focus();
}
});

给你,伙计,我修好了。我在使用Chrome时也遇到了无限循环的问题,但我希望这在所有浏览器中都能像您所期望的那样工作

$('.input')。在('click',函数(e)上{
计数++;
var retval=confirm('你真的想去那里吗?');
如果(!retval){
$('.input').not(e.target.focus();
}
});

看来我找到了解决办法。如果你比我更清楚我们为什么要这样做,请解释

$('#txtTestOne,#txtTestTwo')。关于('blur',函数(e){
if(!$(e.relatedTarget).is(':text')){
返回;
}
var retval=confirm('你真的想去那里吗?');
如果(!retval){
e、 target.focus();
}否则{
e、 relatedTarget.focus();
}
});


我猜您10.6.8安装中的浏览器比较旧(10.6支持在某个时候被放弃),这可能就是它们行为不同的原因。这是真的,但它不能解释为什么问题只在较新的系统中出现。很有趣,感谢您试一试。但是当我把模糊事件放回去时,问题又出现了。如果我使用点击事件,那么切换到另一个框不会触发它。问题是,当输入元素失去焦点时,模糊事件会触发,所以在第一次输入之间切换时,一切都正常,但是我们在另一个输入上使用焦点,再次触发模糊事件,从这一点开始,它将运行到无穷远,但我想你不能同时使用它们,因为它们会不断地点燃每一个other@BobRodes是的,确实如此,但你们会监听模糊事件在两个输入端上发生,当它发生时,你们会根据if语句改变焦点。所以,当焦点改变时,它会再次触发模糊事件,因为“以前”的输入丢失了焦点,我不认为它是这样工作的。一旦该元素失去焦点,您可以在不触发第一个元素的模糊事件的情况下聚焦到另一个元素。因为它已经失去了焦点。此外,如果选择“取消”,也会发生此问题,这将重新聚焦于失去焦点的元素。既然如此,没有其他元素会失去焦点,所以我看不到模糊事件会发生在哪里。