web-dev-qa-db-fra.com

jQuery focus ne fonctionne pas dans Chrome

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?

29
rybo111

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.

70
claustrofob

Tu devrais utiliser:

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

DEMO

Et la même chose pour le gestionnaire #five.

L'événement oninput semble avoir le même comportement que onkeypress .

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