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

发布于 2024-11-08 13:51:33 字数 840 浏览 3 评论 0原文

单击此处查看示例 http://www.mestudios.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);

});

Click here to see example
http://www.messtudios.com/form/

Now, when you click on Create Account - there is a slide animation with jquery, and then the first input field focuses.

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

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

});

The problem I am having is that when I try and focus on another input field to enter information in, the focus skips back to the first input field ( i guess its something wrong with setInterval

Any Help would be appriciated in advance.
Thanks,
-O

EDIT:

This worked thanks... Also the below works

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

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

});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半暖夏伤 2024-11-15 13:51:33

我认为你的意思是使用 setTimeout 而不是 setInterval;它每秒持续运行该循环,这就是导致焦点跳回到第一个输入框的原因。

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

例如:

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

I think you meant to use setTimeout instead of setInterval; it's continuously running that loop every second which is what's causing the focus to jump back to the first input box.

If you want the animation to happen after the slideUp animation is complete, use the callback argument of the slideUp method instead of relying on setTimeout.

For example:

$("#openc").click(function(){
    $("#close-top").slideUp(450,function() {             
        $("#open-me").slideDown();
        $("#regkey").focus();
        $("#closec").show();
    });
    $("#openc").hide();
});
寄风 2024-11-15 13:51:33

始终将焦点集中到第一个输入 bcoz 您将焦点上第一个输入的 id(regkey) 设置为焦点,

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

而不是在下一个输入上焦点,您应该使用以下逻辑

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

focus alwayz to first input bcoz u set the id(regkey) of first input on focus

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

instead to focus on next input you should use below logic

$("input").change(function() {
  var inputs = $(this).closest('form').find(':input');
  inputs.eq( inputs.index(this)+ 1 ).focus();
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文