2015-08-15 69 views
0

这是目前的情况,代码是自我解释。如何停止表单提交进入循环?

HTML表单

<form id="register" action="example.com/signup" method="post" accept-charset="utf-8" enctype="multipart/form-data"> 
    <input id="email" type="email" name="email"> 
    <label for="email">Email</label><br /> 

    <input id="password" type="password" name="password"> 
    <label for="password">Password</label> 

    <button type="submit" name="register" id="submit" value="Submit">Submit</button> 
</form> 

的Javascript

$('#register').submit(function(event){ 

event.stopPropagation(); 
event.preventDefault(); 

alert('fff'); 

if(condition) 
{ 
    $(this).submit(); 
} 
else 
{ 
    //dostuff 
    if(condition) 
    { 
     //dostuff 
     return; 
    } 
    else 
    { 
     $(this).submit(); 
    } 
} 

}); 

但表单提交进入循环,我如何防止它发生?

+0

如果窗体进入一个无限循环,你的问题是你的条件,你可以给我们你的病情? :) –

+1

可能是我错了,但如果你在submit()中调用$(this).submit(),它是一个递归。 – SergeyAn

+0

@ user1551066是的,我明白,我需要从该JavaScript函数提交表单。 – StudentX

回答

4

这段代码,您目前拥有将启动您提交的回调再次

$(this).submit(); 

你不希望出现这种情况 - 你只是想return true;如果你想与提交或return false;继续,如果你不“T。


此外,您需要这部分

event.stopPropagation(); 
event.preventDefault(); 
+0

但是,如何从JavaScript/JQuery提交表单?由于在这些条件之一中(这里提供了一个剥离完成的代码),我将自定义值附加到隐藏字段,并且必须将这些值提交给处理提交的PHP脚本。 – StudentX

+1

点击提交“发起”表单提交。现在,由于您有回调,因此会先执行这些回调(在将提交发送到服务器之前),并且您可以在这些回调中取消提交,或者可以更改表单中的任何数据。 如果您返回true,则提交实际上会转到服务器(您可以在返回之前执行任何操作,包括追加自定义值...)。如果您返回false或取消事件,则提交将被取消(即不会转到服务器) – potatopeelings