我有this jsfiddle的JavaScript确认框。这也是片段:
$('#txtTestOne, #txtTestTwo').on('blur', function(e) {
var retval = confirm('Do you really want to go there?');
if (!retval) {
e.target.focus();
} else {
e.relatedTarget.focus();
}
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<input type="text" id="txtTestOne" autofocus>
<input type="text" id="txtTestTwo">
&#13;
这在我的笔记本电脑(OS X 10.6.8)上运行良好,在Chrome和Opera中都经过测试。但是,当我在运行OS X 10.11.6的桌面计算机上测试时,我发现确认框在Chrome和Safari中无限循环(在进行选择后不断重新显示窗口)。
我也添加了片段,以确保它不是jsfiddle的问题,不,它不是。代码段和jsfiddle的行为相同。
由于问题存在于一个操作系统上的两个不同浏览器中,而另一个操作系统中的两个浏览器中不存在问题,因此它似乎不太可能是浏览器问题。我也不认为我对代码做了任何错误,但在知道之前,我才知道。
我做错了什么,或者我不知道的确认方法是否存在某些问题?此外,如果它在您的计算机上正确运行,您可能会非常友好地在评论中提及您正在运行的操作系统。
答案 0 :(得分:0)
在这里,伙计我修好了。我使用Chrome时也遇到了无限循环问题,但现在这应该可以像我希望的那样在所有浏览器中使用
$('.input').on('click', function(e) {
count++;
var retval = confirm('Do you really want to go there?');
if (!retval) {
$('.input').not(e.target).focus();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="txtTestOne" class="input" autofocus>
<input type="text" id="txtTestTwo" class="input">
Nope sry,焦点模糊不起作用,没有正确测试
答案 1 :(得分:0)
我似乎找到了解决方案。如果你有一个比我更清楚的图片,为什么我们必须这样做,请解释。
$('#txtTestOne, #txtTestTwo').on('blur', function(e) {
if (!$(e.relatedTarget).is(':text')) {
return;
}
var retval = confirm('Do you really want to go there?');
if (!retval) {
e.target.focus();
} else {
e.relatedTarget.focus();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<input type="text" id="txtTestOne" autofocus>
<input type="text" id="txtTestTwo">