このフィドルをご覧ください: 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(); }
});
誰も私がこれを回避する方法を知っていますか?
Chromeのバグのようです。イベントを適切に実行するには速すぎることがあります;)
回避策を見つけました http://jsfiddle.net/Rd2rZ/
$("#one").on("input", function() {
if($("#one").val().length == 2) {
setTimeout(function(){
$("#two").focus();
}, 1);
}
});
setTimeout
を最小限の遅延で使用します。遅くなりますChromeそして動作させます。
以下を使用する必要があります。
$("#one").on("keyup paste",function() {
console.log($(this).val());
if($(this).val().length == 2) { $("#two").focus(); }
});
#five
ハンドラーでも同じです。
oninput
イベントは onkeypress
と同じ動作をしているようです。
$("#one").keydown(function(){
if($(this).val().length==2)
{
$("#two").focus();
}
});