Подтвердить что ты не робот

JQuery не работает в Chrome

Смотрите эту скрипту: 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(); }
});

Кто-нибудь знает, как я могу обойти это?

4b9b3361

Ответ 1

Похоже на ошибку в Chrome. Иногда слишком быстро выполнять события правильно;)

Обнаружено обходное решение http://jsfiddle.net/Rd2rZ/

$("#one").on("input", function() {
    if($("#one").val().length == 2) { 
        setTimeout(function(){
            $("#two").focus();
        }, 1);
    }
});

Используйте setTimeout с минимальной задержкой. Это замедлит Chrome и сделает его работу.

Ответ 2

Вы должны использовать:

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

DEMO

И то же самое для обработчика #five.

Событие oninput похоже, имеет такое же поведение, как onkeypress.

Ответ 3

$("#one").keydown(function(){
   if($(this).val().length==2)
   {
      $("#two").focus();
   }
});

Ответ 4

У меня такая же проблема, и я исправил ее с помощью следующего кода:
У вас также должен быть атрибут имени для ввода, чтобы он работал.

$("#one").on("input", null, null, function() {  
   if($("#one").val().length == 2) {  
       setTimeout(function() { $('input[name="one"]').focus() }, 3000);  
   }  
});  

Надеюсь, это поможет кому-то, кто не получил работу, используя другие предложения.