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 :

Vérification formulaire contenant tableaux variables text et checkbox


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Par défaut Vérification formulaire contenant tableaux variables text et checkbox
    Bonjour tout le monde,
    Je me bagarre depuis quelque temps avec une fonction de vérification d'un formulaire.
    Cette fonction ne me renvoie pas les manques des champs qui doivent être renseignés et m'envoie sur la page suivante avec les erreurs bien sur !
    Voici le script
    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
    function verif()
    {
    var nberreur=0;
    var texterreur="";
    var inputList=document.forms['identi'].elements;
    for (unInput in inputList)
    {
    var x = document.forms['identi'].elements[unImput];
    if (x.value==0 || x.value =='' || x.value==false)
    {
    texterreur+= "Le champ "+ x.name "+n\'a pas été rempli \n";
    nberreur++;
    }
    }
    if (nberreur != 0)
    {
    alert(texterreur);
    return false;
    }
    else
    {
    return true;
    }
    }
    et le code html issu de firebug puisque le tout est en php
    Code HTML : 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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <div id="formulea">
    <form id="ident" onsubmit="return verif(this)" action="validear.php" method="POST" name="identi">
    <input type="hidden" value="4 726,00" name="prix">
    <font size="4" face="Verdana" color="#800000"> Liste des passagers </font>
    <br>
    <div id="formulec" class="td_formule">
    <fieldset style="border: ridge #0033FF">
    <legend align="top">Adultes</legend>
    <input id="civila" type="checkbox" value="Mr" name="civil[]">
    <label>Monsieur</label>
    <input id="civila" type="checkbox" value="Mme" name="civil[]">
    <label>Madame</label>
    <label> Nom : </label>
    <input id="nompas" type="text" size="15" value="" name="pasnom[]">
    <label> Prénom : </label>
    <input id="pnompas" type="text" size="15" value="" name="pasprenom[]">
    <label> Date de naissance : </label>
    <input id="naispas" type="text" size="10" value="" name="pasnais[]">
    JJ/MM/AAAA
    <br>
    </fieldset>
    <br>
    <font size="4" face="Verdana" color="#800000"> Vos coordonnées </font>
    <br>
    <div id="identite" class="td_formule">
    <fieldset style="border: ridge #0033FF">
    <legend align="top">Votre identité</legend>
    <input id="civilc" type="checkbox" value="Mr" name="civili">
    <label>Monsieur</label>
    <br>
    <input id="civilc" type="checkbox" value="Mme" name="civili">
    <label>Madame</label>
    <br>
    <label> Votre nom : </label>
    <br>
    <input id="coodnom" type="text" value="" size="15" name="nomcood">
    <br>
    <label> Votre prénom : </label>
    <br>
    <input id="coodpnom " type="text" value="" size="15" name="pnomcood">
    <br>
    <label>Numéro, rue ou lieu-dit : </label>
    <br>
    <input id="coodrue'" type="text" value="" size="30" name="rue">
    <br>
    <label> Ville : </label>
    <br>
    <input id="coodville" type="text" value="" size="25" name="villeco">
    <br>
    <label> Code postal: </label>
    <br>
    <input id="coodpos" type="text" value="" size="5" name="codepost">
    <br>
    <label> Adresse mail valide : </label>
    <br>
    <input id="coodmail" type="text" value="" size="30" name="courie">
    </fieldset>
    </div>
    </div>
    </form>
    </div>
    <table width="1000" align="center">
    <tbody>
    <tr>
    <td align="center">
    <input type="submit" value="VALIDEZ VOTRE COMMANDE">
    </td>
    </tr>
    </tbody>
    </table>

    Petites explications complémentaires concernant la partie Adultes.
    Je ne sais pas à l'avance combien d'adultes il y aura puisque le nombre a été indiqué dans la page précédente.
    Je pourrai également avoir d'autres groupes d'inscrite (Enfants, personnes âgées) qui ne figurent pas dans cet exemple de code généré.

    Alors si quelqu'un pouvait me donner un coup de main, cela serait sympa.
    Je précise que j'ai fait de multiples tentatives avec des scripts différents pris (comme celui-ci d'ailleurs) sur des réponses données à d'anciennes questions sur le sujet, ou des scripts de ma création mais que je ne suis arrivé à rien !
    Un grand merci par avance

  2. #2
    Membre Expert Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Par défaut
    Plusieurs erreurs dans ton code :

    - Il faut que ton submit soit dans ton form.
    - Dans la ligne ""Le champ " + x.name "+n\'a pas été rempli \n";" il y a une inversion entre le guillemet et le +
    - Tu as écrit unImput au lieu de unInput

    Ça devrait être bon je crois

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Par défaut
    Merci pour ces bons conseils, comme quoi plusieurs paires d'yeux sont parfois très utiles.
    Mais il reste encore quelques problèmes à résoudre :
    Pourquoi me met-il 3 fois le même champs qui n'est pas renseigné
    Il ne prends pas en compte les champs Checkbox dans les erreurs !

  4. #4
    Membre Expert Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Par défaut
    Tu devrais utiliser des radiobutton plutôt que des checkbox pour les champs de sélection. Sinon, cela veut dire que l'on peut être à la fois Monsieur et Madame.

    le code suivant permettrai dans ton cas de tester les radiobutton

    Code javascript : 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
    38
    39
    40
    41
    42
    43
    44
    function verif()
    {
    	var nberreur=0;
    	var texterreur="";
    	var inputList=document.forms['identi'].elements;
    	var isChecked;
    	var lastRadioName = "";
    	for (unInput in inputList)
    	{
    		var x = document.forms['identi'].elements[unInput];
    		if (x.type == "radio" && lastRadioName != x.name)
    		{
    			lastRadioName = x.name;
    			isChecked = false;
    			for (var i = 0; i < document.forms['identi'][x.name].length; i++)
    			{
    				if (document.forms['identi'][x.name][i].checked)
    				{
    					isChecked = true;
    					break;
    				}
    			}
    			if (!isChecked)
    			{
    				texterreur+= "Le champ "+ x.name + "n\'a pas été rempli \n";
    				nberreur++;
    			}
    		}
    		else if (x.value == 0 || x.value =='' || x.value==false)
    		{
    			texterreur+= "Le champ "+ x.name + "n\'a pas été rempli \n";
    			nberreur++;
    		}
    	}
    	if (nberreur != 0)
    	{
    		alert(texterreur);
    		return false;
    	}
    	else
    	{
    		return true;
    	}
    }

    il suffit de remplacer type="checkbox" par type="radio".

    Par contre, une remarque, en HTML il ne faut pas utiliser le même id pour deux éléments différents.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Par défaut
    Bonjour,

    Cela marche bien si je n'ai qu'une personne par catégorie (Adulte, enfant, personne âgée)
    Mais ne donne pas les erreurs pour les autres.
    Je parle naturellement des checkbox ! parce que pour les text ça fonctionne pour tous

  6. #6
    Membre Expert Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Par défaut
    Il ne faut pas donner le même "name" à plusieurs radiobutton qui serait dans des groupes différents. Sinon, tu ne pourras sélectionner qu'un seul d'entre eux sur toute ta page.
    Par contre les radiobutton d'un même groupe doivent avoit le même name.

    C'est à dire que le name doit être "civilAdulte[]", "civilEnfant[]"...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer un texte saisi dans un formulaire dans une variable
    Par cyberlp dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/07/2009, 10h52
  2. Actualiser une zone de texte contenant une variable
    Par moromain dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/06/2007, 09h11
  3. Réponses: 2
    Dernier message: 29/11/2006, 14h49
  4. [Tableaux] Variable issues d'un formulaire
    Par Agrumes dans le forum Langage
    Réponses: 6
    Dernier message: 06/07/2006, 16h46
  5. [Tableaux] Variable de type array dans un formulaire
    Par ThAOTh dans le forum Langage
    Réponses: 3
    Dernier message: 14/03/2006, 17h49

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