it-swarm.com.de

jQuery-Fokus funktioniert nicht in Chrome

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?

29
rybo111

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.

70
claustrofob

Du solltest benutzen:

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

DEMO

Dasselbe gilt für den #five-Handler.

Das Ereignis oninput scheint das gleiche Verhalten wie onkeypress zu haben.

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