Bitte sehen Sie diese Geige: http://jsfiddle.net/yg49k/
Der folgende Code funktioniert in FireFox einwandfrei, in der neuesten Version von Chrome jedoch nicht.
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(); }
});
Weiß jemand, wie ich das umgehen kann?
Scheint wie ein Fehler in Chrome. Manchmal ist es zu schnell, um Ereignisse korrekt auszuführen;)
Workaround gefunden http://jsfiddle.net/Rd2rZ/
$("#one").on("input", function() {
if($("#one").val().length == 2) {
setTimeout(function(){
$("#two").focus();
}, 1);
}
});
Verwenden Sie setTimeout
mit einer minimalen Verzögerung. Chrome wird langsamer und funktioniert.
Du solltest benutzen:
$("#one").on("keyup paste",function() {
console.log($(this).val());
if($(this).val().length == 2) { $("#two").focus(); }
});
Dasselbe gilt für den #five
-Handler.
Das Ereignis oninput
scheint das gleiche Verhalten wie onkeypress
zu haben.
$("#one").keydown(function(){
if($(this).val().length==2)
{
$("#two").focus();
}
});