S'il vous plaît voir ce violon: http://jsfiddle.net/yg49k/
Le code suivant fonctionne bien dans FireFox mais ne fonctionne pas dans la dernière version de 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(); }
});
Est-ce que quelqu'un sait comment je peux contourner ça?
On dirait un bug dans Chrome. Parfois, il est trop rapide pour exécuter les événements correctement;)
Vous avez trouvé une solution de contournement http://jsfiddle.net/Rd2rZ/
$("#one").on("input", function() {
if($("#one").val().length == 2) {
setTimeout(function(){
$("#two").focus();
}, 1);
}
});
Utilisez setTimeout
avec un délai minimal. Cela ralentira Chrome et le fera fonctionner.
Tu devrais utiliser:
$("#one").on("keyup paste",function() {
console.log($(this).val());
if($(this).val().length == 2) { $("#two").focus(); }
});
Et la même chose pour le gestionnaire #five
.
L'événement oninput
semble avoir le même comportement que onkeypress
.
$("#one").keydown(function(){
if($(this).val().length==2)
{
$("#two").focus();
}
});