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(); }
});
Кто-нибудь знает, как я могу обойти это?
Ответы
Ответ 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);
}
});
Надеюсь, это поможет кому-то, кто не получил работу, используя другие предложения.