我试图添加一个效果登录表单,当效果完成(如1秒),然后去php。
我试图在.submit中使用e.p preventdefault()创建一个setTimeout()函数,这样我就可以延迟它一秒钟,但问题是它没有获取数据,而是在一个空白网页中进入php,而不是检查输入的数据。
当e.p 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>
您已经创建了一个无限循环。例如,如果我有一个按钮,javascript:
$('button').click(function() {
var b = this;
$('#status').append('Clicked<br/>');
setTimeout(function() {
b.click();
}, 1000);
});
http://jsfiddle.net/b9chris/yaNdc/一旦我点击那个按钮,我将得到另一个"点击"的消息附加到状态标签每秒钟…直到永远。这是因为jquery会为你手动触发的事件触发它所有的事件处理程序;在这种情况下,你附加到'submit',然后触发'submit',并循环回你自己的代码,这一直阻止表单实际提交。
在本地测试机器上,这个表单提交几乎是立即发生的,但是一旦你把它放到web服务器上,实时版本将花费更长的时间,你的动画将有时间播放。最简单的解决方法就是删除ev.preventDefault()
,让它在提交过程中自行提交。