2015-08-15 68 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