问题在于,如果关注一个#input1
,我会尝试将重点放在#input2
上
通过运行
$('#input2').focus();
首先运行focusin
#input2
事件,然后focusout
的{{1}}
为什么会发生这种情况,为什么不#input1
先运行?
请参阅示例http://jsfiddle.net/zZZsD/3/ 输入第一个输入4个符号
更新:顺便说一句,由于性能原因,我使用了委托绑定而不是直接绑定,可能会有很多输入字段......
答案 0 :(得分:1)
答案 1 :(得分:1)
这可能是浏览器中Javascript引擎的jQuery内部机制,甚至是“更差”。如果订单很重要,您可以在焦点之前使用模糊方法。
(function () {
$('#cont').on('keyup', 'input', function (event) {
var input = $(this);
if (input.val().length == 4) {
input.blur();
$('#input2').focus();
}
});
$('#cont').on('focus', 'input', function () {
$('#events').append('focusin of ' + this.id + ' <br>');
});
$('#cont').on('blur', 'input', function () {
$('#events').append('focusout of ' + this.id + ' <br>');
});
})();
当你选择另一个元素并对它们进行疏散时,导航器可能会检查聚焦元素。