32

请看这个小提琴: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(); }
});

有谁知道我该如何解决这个问题?

4

4 回答 4

75

似乎是 Chrome 中的一个错误。有时,正确执行事件太快了;)

找到了解决方法http://jsfiddle.net/Rd2rZ/

$("#one").on("input", function() {
    if($("#one").val().length == 2) { 
        setTimeout(function(){
            $("#two").focus();
        }, 1);
    }
});

setTimeout以最小的延迟使用。它会减慢 Chrome 的速度并使其正常工作。

于 2013-06-29T20:57:02.690 回答
2

你应该使用:

$("#one").on("keyup paste",function() {
    console.log($(this).val());
    if($(this).val().length == 2) { $("#two").focus(); }
});

演示

处理程序也是#five如此。

oninput事件似乎具有与 相同的行为onkeypress

于 2013-06-29T20:43:41.547 回答
0
$("#one").keydown(function(){
   if($(this).val().length==2)
   {
      $("#two").focus();
   }
});
于 2013-06-29T20:49:00.353 回答
-5

我遇到了同样的问题并使用以下代码修复了它:
您还应该为您的输入提供一个名称属性以使其正常工作。

$("#one").on("input", null, null, function() {  
   if($("#one").val().length == 2) {  
       setTimeout(function() { $('input[name="one"]').focus() }, 3000);  
   }  
});  

希望这可以帮助那些没有使用其他建议的人。

于 2015-05-21T07:36:56.707 回答