2009-11-04 4 views
0

J'ai l'intention de montrer/cacher des divs pour valider un formulaire. Mais les divs ne montrent qu'une fraction de seconde, puis le formulaire est soumis ...pourquoi ce formulaire est-il toujours soumis après le retour faux?

Des idées pourquoi?

est ici le code:

function validateForm() { 
var name = nameEmpty(document.getElementById("annonsera_name")); 
if (nameEmpty(name)){return false;} 
return false; 
    } 
function nameEmpty(fld){ 
    if (fld.value==0) { 
     document.getElementById("annonsera_nameempty_error").style.display='block'; 
     document.getElementById("annonsera_namenotvalid_error").style.display='none'; 
     document.getElementById("annonsera_name").focus(); 
     return false; 
    } 
    else if (fld.value.match(alphaExp)) { 
     document.getElementById("annonsera_namenotvalid_error").style.display='block'; 
     document.getElementById("annonsera_name").focus(); 
     document.getElementById("annonsera_nameempty_error").style.display='none'; 
     return false; 
    } 

     document.getElementById("annonsera_nameempty_error").style.display='none'; 
     document.getElementById("annonsera_namenotvalid_error").style.display='none'; 
    return false; 

      } 

et voici la forme:

<form name="annonsera" id="annonsera" method="post" enctype="multipart/form-data" onSubmit="return validateForm();"> 
+1

Vous avez probablement une erreur javascript quelque part qui annule la fonction et provoque l'envoi du formulaire comme d'habitude. – davethegr8

+0

merci, l'a résolu .... :) –

Répondre

1

Il y a probablement générer une erreur et donc jamais rien retour. En supposant que vous utilisez Firefox, avez-vous vérifié la console javascript?

Je vois ce qui ressemble à un problème ici, où vous appelez nameEmpty() deux fois - une fois avec un champ, et l'autre fois avec un (probablement?) Valeur booléenne:

var name = nameEmpty(document.getElementById("annonsera_name")); // Returns boolean 
if (nameEmpty(name)){return false;} // Tries to pass boolean back into nameEmpty? 
0

Peut-être un peu hors-sujet , mais ici va ...

Vous devriez vraiment considérer JQuery Validation, c'est agréable, propre et facile à mettre en œuvre. Je l'ai fait quelques fois, et je n'ai jamais regardé en arrière depuis. Il vaut mieux la méthode de validation manuelle comme celle que vous utilisez :)

Vérifiez le example, il n'y a vraiment pas beaucoup de code à écrire, pour que la validation se fasse.

Dans votre exemple qui serait (non testé):

<script> 
    $(document).ready(function(){ 
    $("#annonsera").validate({ 
     rules: { 
     annonsera_name: { 
      required: true, 
      minlength: 1 
     } 
     }, 
     messages: { 
     annonsera_name: { 
      required: "You need to write your name", 
      minlength: jQuery.format("At least {0} characters required!") 
     } 
     } 
    }) 
    }); 
</script> 

Il y a aussi beaucoup de façons de personnalisation à travers DHTML et CSS, consultez le options.

+0

JQuery La validation est loin d'être propre et agréable. Il a encore beaucoup de bugs et a changé depuis les 18 derniers mois à un point que peu de chose n'est même pas compatible. C'est un bon morceau de code à utiliser mais ce n'est pas beau et propre. –

+0

Dans la mesure où je l'ai utilisé, il a été extrêmement fiable et je pense toujours que la manière déclarative d'écrire ses règles de validation bat un jour la validation manuelle. Je n'ai pas encore trouvé de bugs, mais je ne les ai pas cherché non plus. –

+0

En regardant http://plugins.jquery.com/project/issues/statistics/validate Je vois qu'il y a 30 rapports de bugs actifs. Un nombre assez important compte tenu de leur durée de vie moyenne (15 semaines 5 jours). Néanmoins, je recommande toujours la validation JQuery, tant que les bogues n'affectent pas votre solution. –

Questions connexes