2010-09-07 6 views
3

J'essaie de soumettre un formulaire si une condition n'est pas validée.Formulaire non soumis après un deuxième appel

<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> 

Si ma forme est valide sur le premier appel, ma forme est bien soumis (redirection vers une autre page)

Si ma forme n'est pas valide la première fois, et je corriger, je vois la case d'alerte "valide", mais mon formulaire n'est pas envoyé.

Avez-vous une idée de ce problème?

+1

supprimer le 'return true' là ...;) – Reigel

+0

pas mieux ... :-( – Tom

+1

Sur quel navigateur/version pouvez-vous reproduire le problème? J'ai essayé sur le dernier firefox (en utilisant une simple" chaîne "à la place Je suppose que vous chargez votre code js sur document.ready et vous fermez les balises d'entrée et de point P. Il ne fait pas de mal si vous mettez un ';' ('valide') [si vous minimisez le code que vous devriez] – cripox

Répondre

0

C'est parce que vous avez renvoyé false. Vous devriez plutôt utiliser stopImmediatePropagation();, comme ceci:

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

Lorsque vous revenez faux, vous faites essentiellement que le bouton soumettre inutile jusqu'à ce que vous rechargez la page.

Questions connexes