在setInterval中的slideDown之后的jquery焦点不断重复帮助

时间:2011-05-20 04:52:10

标签: jquery focus setinterval

点击此处查看示例 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 个答案:

答案 0 :(得分:1)

我认为您打算使用setTimeout而不是setInterval;它每秒都在不断地运行该循环,这导致焦点跳回到第一个输入框。

如果您希望在slideUp动画完成后动画发生,请使用slideUp方法的回调参数,而不是依赖于setTimeout。

例如:

$("#openc").click(function(){
    $("#close-top").slideUp(450,function() {             
        $("#open-me").slideDown();
        $("#regkey").focus();
        $("#closec").show();
    });
    $("#openc").hide();
});

答案 1 :(得分:0)

将alwayz聚焦到第一次输入bcoz u设置焦点上第一个输入的id(regkey

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

代替关注下一个输入,你应该使用逻辑

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