2010-09-07 25 views
3

如果條件未得到驗證,我嘗試提交表單。第二次調用後未提交表格

<form action="http://www.google.com" method="post" id="support_form"> 
<p class="accept"><input type="checkbox" id="id_cgu" name="cgu" value="1"> I accept 
<input type="submit" value="ok"> 
</form> 

<script language="javascript"> 

$("#support_form").submit(function() { 
    if($("#id_cgu:checked").length==0) { 
     alert("{% trans "Vous must accept terms of services" %}"); 
     return false; 
    } else { 
     alert('valid') 
     return true; 
    } 
}); 

</script> 

如果我的形式是在第一次調用有效,我的狀態很好提交(重定向到另一頁)

如果我的形式不是有效的第一時間,我糾正它,然後,我看到警示框「有效」,但我的表單未提交。

你對這個問題有什麼想法嗎?

+1

刪除'return true' there ...;) – Reigel 2010-09-07 08:36:54

+0

沒有更好的... :-( – Tom 2010-09-07 08:51:37

+1

什麼瀏覽器/版本可以重現該問題?我嘗試了最新的firefox(使用一個普通的「字符串」你的{%%}),它工作得很好,我假設你在document.ready上加載了你的js代碼,並關閉了輸入和p標籤,如果你在alert後面加上';' ('有效')[如果你最小化代碼,你應該] – cripox 2010-09-07 11:46:22

回答

0

這是因爲你返回了false。您應該改用stopImmediatePropagation();,像這樣:

$("#support_form").submit(function(ev) { 
if($("#id_cgu:checked").length==0) { 
    alert("{% trans "Vous must accept terms of services" %}"); 
    ev.stopImmediatePropagation(); 
} //rest of code... 

當你返回false,你基本上是做直到你重新載入頁面提交按鈕無用。

相關問題