0

我正在尝试向登录表单添加效果,当效果完成后(如 1 秒),它会转到 php.ini。

我尝试使用 e.preventDefault() 在 .submit 中创建一个 setTimeout() 函数,这样我可以将它延迟一秒钟,但问题是它没有获取数据,而是它转到了一个空白网页中的 php正在检查输入的数据。

当 e.preventDefault() 被拿走 php 工作但它没有给我一秒钟先执行动画然后转到 php 文件检查所有数据

这是我的代码

<script> $("#effectsExplode").submit(function (e) {
        var form = this;
        e.preventDefault();
        $("#effectsExplode").toggle("explode");
        setTimeout(function () {
            form.submit();
        },1000);
    });
</script>




<form id="effectsExplode" class="form-1" method="post" action="checklogin.php">
    <p class="field">
        <input type="text" name="login" placeholder="Username or email">
        <i class="icon-user icon-large"></i>
    </p>
    <p class="field">
        <input type="password" name="password" placeholder="Password">
        <i class="icon-lock icon-large"></i>
    </p>
    <p class="submit">
        <button id="buttonexplode" type="submit" name="loginsubmit">
            <i class="icon-arrow-right icon-large"></i>
        </button>
    </p>
</form>
4

1 回答 1

2

您已经创建了一个无限循环。例如,如果我有一个按钮和这个 javascript:

$('button').click(function() {
    var b = this;
    $('#status').append('Clicked<br/>');
    setTimeout(function() {
        b.click();
    }, 1000);
});

http://jsfiddle.net/b9chris/yaNdc/

单击该按钮后,我将每秒收到另一个附加到该状态标签的“已单击”消息……永远。这是因为 jquery 会为您手动触发的事件触发其所有事件处理程序;在这种情况下,您附加到“提交”然后触发“提交”并直接循环回到您自己的代码中,这一直阻止表单实际提交。

很可能在您的本地测试机器上,此表单提交几乎是立即发生的,但是一旦您将其放在网络服务器上,实时版本将需要更长的时间,并且您的动画将有时间播放。最简单的解决方案是摆脱ev.preventDefault()它并让它在提交需要时间时提交并播放。

于 2013-04-08T01:56:17.867 回答