web-dev-qa-db-ja.com

jQueryフォーカスがChromeで機能しない

このフィドルをご覧ください: 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(); }
});

誰も私がこれを回避する方法を知っていますか?

30
rybo111

Chromeのバグのようです。イベントを適切に実行するには速すぎることがあります;)

回避策を見つけました http://jsfiddle.net/Rd2rZ/

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

setTimeoutを最小限の遅延で使用します。遅くなりますChromeそして動作させます。

71
claustrofob

以下を使用する必要があります。

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

[〜#〜] demo [〜#〜]

#fiveハンドラーでも同じです。

oninput イベントは onkeypress と同じ動作をしているようです。

2
A. Wolff
$("#one").keydown(function(){
   if($(this).val().length==2)
   {
      $("#two").focus();
   }
});
0
Sahin Yanlık