script validation

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : script validation

par AB » 04 janv. 2008, 19:01

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:

par yaug » 04 janv. 2008, 18:33

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

script validation

par Invité » 04 janv. 2008, 18:18

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.