请看这个小提琴:http://jsfiddle.net/yg49k/
以下代码在FireFox中运行良好,但在最新版本的Chrome中无效。
HTML:
<input type="text" id="one" placeholder="Type two chars" />
<input type="text" id="two" placeholder="It should focus here" />
jQuery的:
$("#one").on("input", function() {
if($("#one").val().length == 2) { $("#two").focus(); }
});
有谁知道如何解决这个问题?
答案 0 :(得分:71)
似乎是Chrome中的一个错误。有时候执行事件的速度太快了;)
找到了解决方法http://jsfiddle.net/Rd2rZ/
$("#one").on("input", function() {
if($("#one").val().length == 2) {
setTimeout(function(){
$("#two").focus();
}, 1);
}
});
以最小延迟使用setTimeout
。它会降低Chrome的速度并使其正常工作。
答案 1 :(得分:2)
您应该使用:
$("#one").on("keyup paste",function() {
console.log($(this).val());
if($(this).val().length == 2) { $("#two").focus(); }
});
#five
处理程序也一样。
oninput
事件似乎与onkeypress
具有相同的行为。
答案 2 :(得分:0)
$("#one").keydown(function(){
if($(this).val().length==2)
{
$("#two").focus();
}
});
答案 3 :(得分:-5)
我遇到了同样的问题并使用以下代码修复了它:
您还应该为输入设置name属性以使其正常工作。
$("#one").on("input", null, null, function() {
if($("#one").val().length == 2) {
setTimeout(function() { $('input[name="one"]').focus() }, 3000);
}
});
希望这可以帮助那些没有使用其他建议的人。