JQuery Focus после SlideDown в setInterval продолжает повторять помощь - PullRequest
1 голос
/ 20 мая 2011

Нажмите здесь, чтобы увидеть пример http://www.messtudios.com/form/

Теперь, когда вы нажимаете кнопку Создать учетную запись - появляется слайд-анимация с jquery, а затем фокусируется первое поле ввода.

$("#openc").click(function(){
    $("#close-top").slideUp(450);
    $("#openc").hide();

    setInterval(function() {             
        $("#open-me").slideDown();
        $("#regkey").focus();
        $("#closec").show();
    }, 1000);

});

У меня проблема в том, что когда я пытаюсь сфокусироваться на другом поле ввода для ввода информации, фокус переходит обратно к первому полю ввода (я думаю, что-то не так с setInterval

Любая справка будет оцененазаранее. Спасибо, -O

РЕДАКТИРОВАТЬ:

Это сработало, спасибо ... Также работает ниже

$("#openc").click(function(){
    $("#close-top").slideUp(450);
    $("#openc").hide();

    setTimeout(function() {          
        $("#open-me").slideDown();
        $("#regkey").focus();
        $("#closec").show();
    }, 1000);

});

Ответы [ 2 ]

1 голос
/ 20 мая 2011

Я думаю, что вы хотели использовать setTimeout вместо setInterval; он непрерывно запускает этот цикл каждую секунду, из-за чего фокус переходит обратно к первому полю ввода.

Если вы хотите, чтобы анимация происходила после завершения анимации slideUp, используйте аргумент обратного вызова метода slideUp вместо того, чтобы полагаться на setTimeout.

Например:

$("#openc").click(function(){
    $("#close-top").slideUp(450,function() {             
        $("#open-me").slideDown();
        $("#regkey").focus();
        $("#closec").show();
    });
    $("#openc").hide();
});
0 голосов
/ 20 мая 2011

фокус всегда на первый вход, потому что вы устанавливаете идентификатор (regkey) первого входа на фокусе

 $("#regkey").focus();

вместо фокус на следующем входе, который вы должны использовать ниже логики

$("input").change(function() {
  var inputs = $(this).closest('form').find(':input');
  inputs.eq( inputs.index(this)+ 1 ).focus();
});
...