Page 1 sur 1

script validation

Posté : 04 janv. 2008, 18:18
par Invité
Bonjour à tous,

J'ai trouvé la technqiue suivante sur internet pour valider un formulaire
function valider(){
  // si la valeur du champ prenom est non vide
  if(document.formSaisie.prenom.value != "") {
    // les données sont ok, on peut envoyer le formulaire    
    return true;
  }
  else {
    // sinon on affiche un message
    alert("Saisissez le prénom");
    // et on indique de ne pas envoyer le formulaire
    return false;
  }
}
et le formulaire
<form action="url_page_suivante" onsubmit="return valider()"
  method="get" name="formSaisie">
  <p>
    <label for="prenom">Saisissez votre prénom&nbsp;:</label>
    <input type="text" name="prenom" id="prenom" />
    <input type="submit" value="Ok" />
  </p>
</form>
Le principe marche bien pour un champ. Le problème survient quand j'ajoute un test dans la fonction de validation, pour un champ nom par exemple:
function valider(){
   if(document.formSaisie.prenom.value != "") {  
    return true;
  }
  else {
      alert("Saisissez le prénom");
     return false;
  }

  if(document.formSaisie.nom.value != "") 
  {
    return true;
  }
  else 
  {
    alert("Saisissez le nom");
    return false;
  }

}
Dans ce dernier cas, le 1er test prénom est effectué, mais jamais le 2ème sur le nom.
Voyez vous pourquoi?
Je voudrais enfait que la fonction valider n'envoie qu'un message à la fois, dans l'ordre des champs du form.
Si par exemple j'ai 10 champs et que le 2ème le 3ème et le 4ème ne sont pas remplis, afficher une alerte uniquement pour le 2ème.
L'erreur pour le 3ème n'apparaitra que si le 2ème est rempli, ainsi de suite.

Merci pour vos réponses.

Posté : 04 janv. 2008, 18:33
par yaug
C'est tres simple.
Lors de ton test sur le prenom, tu fais des return.

Donc au final, tu quitte ta fonction (via le return) avant de faire ton test sur le nom.

ton script pourrait alors !etre

Code : Tout sélectionner

function valider(){ if(document.formSaisie.prenom.value == "") { alert("Saisissez le prénom"); return false; } if(document.formSaisie.nom.value == "") { alert("Saisissez le nom"); return false; } return true; }

Posté : 04 janv. 2008, 19:01
par AB
Et quand tu auras un peu plus de temps, tu pourras aussi faire un tableau javascript de tes tests pour que le message renvoie tous les éléments manquant en une seule fois plutôt qu'un par un :wink: