2013-04-08 28 views
0

我想要添加到登录表单的效果,当效果完成(如1秒),它然后进入到PHP。jQuery的.submit()不会将数据传送到PHP当setTimeout的

我试图在.submit中用e.preventDefault()创建一个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> 

回答

2

您已经创建了一个无限循环。举例来说,如果我有一个按钮,此javascript:

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

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

当我点击该按钮,我会得到另一个“点击”信息附加到状态标签每秒......永远。这是因为jQuery为它手动触发的事件触发其所有事件处理程序;在这种情况下,你附加到'提交',然后解雇'提交',并回到你自己的代码,这阻止了表单实际上提交。

最有可能在本地测试机上此表单提交情况几乎是瞬间,但一旦你把它拿出来在Web服务器上的真人版将需要更长的时间,你的动画将有时间玩。最简单的解决方案是摆脱ev.preventDefault(),让它提交和播放,而提交需要时间。

+0

Okie我会努力的..顺便说一句感谢您对我的问题的解释 – 2013-04-08 02:06:07