IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Rendre dynamique vérification des champs


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut Rendre dynamique vérification des champs
    Salut !

    J'essaie de mettre en place une vérification javascript pour chaque champ seulement le code devient vite lourd quand le formulaire devient grand. Et surtout cela rend le script moins réutilisable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    function couleur(obj) {
         obj.style.backgroundColor = "#FFFFFF";
    }
     
    function check() {
    	var msg = "";
     
    		if (document.formulaire.mail.value != "")	{
    		indexAroba = document.formulaire.mail.value.indexOf('@');
    		indexPoint = document.formulaire.mail.value.indexOf('.');
    		if ((indexAroba < 0) || (indexPoint < 0))		{
    		document.formulaire.mail.style.backgroundColor = "red";
    			msg += "Le mail est incorrect\n";
    		}
    	}
    	else	{
    		document.formulaire.mail.style.backgroundColor = "red";
    		msg += "Veuillez saisir votre mail.\n";
    	}
     
    if (document.formulaire.nom.value == "")	{
    		msg += "Veuillez saisir votre nom\n";
    		document.formulaire.nom.style.backgroundColor = "red";
    	}
     
    if (document.formulaire.prenom.value == "")	{
    		msg += "Veuillez saisir votre prenom\n";
    		document.formulaire.prenom.style.backgroundColor = "red";
    	}
     
    	if (msg == "") return(true);
    	else	{
    		alert(msg);
    		return(false);
    	}
    }
    Les if se succèdent... Serait-il possible de faire en sorte de passer le nom du champ en paramètre dans une boucle ? Pour qu'il y ait une boucle avec un seul if ? En php je saurais faire mais en javascript je patauge !

    Quelqu'un peut m'aider svp ?

    Merci d'avance...

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    salut. tu peux doter chaque élément de ton formulaire d'une fonction check que tu invoques quand tu veux valider le formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    monInputText.check = function() { /*action*/ };
    ...
    function checkGlobale()
    {
      //pour tous les items du formulaires
      item.check();
    }

  3. #3
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 52
    Par défaut
    Citation Envoyé par Jiraiya42
    Les if se succèdent... Serait-il possible de faire en sorte de passer le nom du champ en paramètre dans une boucle ? Pour qu'il y ait une boucle avec un seul if ? En php je saurais faire mais en javascript je patauge !

    Quelqu'un peut m'aider svp ?

    Merci d'avance...
    Y'a moyen aussi de passer par document.formulaire.elements[n], et donc de faire une boucle (puisque tes input ont l'air d'avoir des noms sympathiques )

    un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function check() {
    var msg = "";
    var total = document.formulaire.length;
    for (i=0;i<total;i++) {
    if ( document.formulaire.elements[i].value == "") {
    msg += "Veuillez saisir votre "+document.forumlaire.elements[i].name+"\n";
    document.formulaire.elements[i].backgroundColor = "red";
    }
    }
    Aux erreurs de point virgule pres

    Bien entendu ca marche que pour verifier si c'est vide ...

  4. #4
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut
    Perso, j'avais fait une fonction generique, du genre checkField :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function checkField(idDuChamp, Format)
    {
        // on test si le champ respecte l'expression reguliere du format
        // si c'est ok => on renvoit true
     
        // sinon :
        alert("Le champ " + idDuChamp + " ne respecte pas le format attendu : " + Format);
        document.getElementById(idDuChamp).focus();
    }
    Avec comme parametres :
    - idDuChamp = id de l'input
    - Format = format du champ

    "Format" est en fait la clé d'un tableau d'expression regulieres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tableauFormat = Array();
    tableauFormat['chaine'] = expression reguliere
    tableauFormat['chiffre'] = expression reguliere
    tableauFormat['email'] = expression reguliere
    ....
    Si l'input verifie l'expression reguliere, on renvoit true, sinon false.

    Comme ça, il suffit de faire onSubmit="verifierFormulaire();"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function verifierFormulaire()
    {
       if (!checkField("nom", "chaine")) return false;
       if (!checkField("prenom", "chaine")) return false;
       if (!checkField("age", "chiffre")) return false;
       ....
       return true;
    }

Discussions similaires

  1. [MySQL] Formulaire avec vérification des champs
    Par iwanow dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/01/2007, 18h38
  2. pbm vérification des champs d'un formulaire
    Par mariafan dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/12/2006, 13h35
  3. [PEAR][HTML_QuickForm] Vérification des champs
    Par wkd dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 17/11/2006, 12h00
  4. Vérification des champs d'un sous-formulaire
    Par antoine46 dans le forum Access
    Réponses: 5
    Dernier message: 10/08/2006, 11h55
  5. Réponses: 4
    Dernier message: 13/09/2005, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo