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 :

Fonction de validation de formulaire


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut Fonction de validation de formulaire
    Bonjour,
    Après de nombreux jours passés sur le problème décrit ci-dessous, je ne sais plus quoi faire...

    Voilà j'ai une fonction ValidationSaisie() qui doit se charger de vérifier que certains champs sont bien remplit. Elle est appelée lorsqu'on valide le formulaire.
    En principe, si tous les champs sont bien renseignés, elle renvoie true, sinon false et là on reste sur le formulaire en cours.

    Pour mieux comprendre l'environnement applicatif .



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form  name="reservation" id="reservation" METHOD='POST' ACTION="<? echo 'Reservation.php' ; ?> " onsubmit="return ValidationSaisie()">
    Seulement voilà, il y a un bug.
    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
    38
     
    function ValidationSaisie() {
     
    	var somme_erreur = 0 ;
    	var erreur_devise = 0;
    	var erreur_fournisseur = 0;
     
    	var champ_devise_locale = document.getElementById('devise_locale'); 
    	var valeur_devise_locale = parseInt(champ_devise_locale.options[champ_devise_locale.selectedIndex].value);
     
    	// Si la valeur du champ Devise locale n'a pas été renseigné
    	if (valeur_devise_locale ==0) {
    	document.getElementById('devise_locale').style.backgroundColor='#FFCC66';
    	return false;
    	}	
     
    	var nb_fournisseurs = document.getElementById("nb_fournisseurs").value;
    	nb_fournisseurs = parseInt(nb_fournisseurs);
     
    	if (nb_fournisseurs > 1) {
    	var j;
    		for (j=1; j< (nb_fournisseurs+1); j++) 
    			{
    				var num_fournisseur_utilise = document.getElementById('tab_num_fournisseur'+j);
    				var valeur_num_fournisseur_utilise = num_fournisseur_utilise.value;
     
    				var champ_id_fournisseur = document.getElementById("id_fournisseur"+valeur_num_fournisseur_utilise);
    				var valeur_id_fournisseur = champ_id_fournisseur.options[champ_id_fournisseur.selectedIndex].value;
     
    				if (valeur_id_fournisseur == '0') { 
    				champ_id_fournisseur.style.backgroundColor='#FFCC66';
    				return false;
    				}
     
    			}
    	}
     
    }
    J'ai 1 champ select devise_locale à vérifier et un ou plusieurs champ select "id_fournisseur" à vérifier (tableau supplier). Dans tous les cas si la valeur du champ est égal à 0, ce n'est pas bon.

    Cette fonction fonctionne semble-t-il correctement sous FireFox. Elle ne fonctionne pas sous IE, j'ai toujours un message d'erreur.
    Line: 1197
    Character: 5
    Code: 0
    Error Message: 'tab_num_fournisseur1' est indéfini.
    la line 1197 correspond à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var valeur_num_fournisseur_utilise = document.getElementById(eval('tab_num_fournisseur'+j)).value;
    le seul soucis c'est que la valeur existe bien.

    Si un des champs n'est pas remplit, la fonction bloque l'utilisateur sur le formulaire. Génial. Si tout est ok, le formulaire est validé, on passse à l'étape précédente ou suivante, mais msg d'erreur sous iE.

    pour info complémentaire,
    voici un exemple où apparait l'id fournisseur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <td>
    <select id="id_fournisseur6" onblur="this.className='normal';" onfocus="this.className='focus';" onchange="demandeServeurDevise(this)" tabindex="1" name="id_fournisseur6">
    </select>
    <input id="devise_fournisseur6" type="hidden" size="2" name="devise_fournisseur6" value=""/>
    </td>
    <td>
    <input id="montantAchatFournisseur6" class="tab_input_nombre_monnetaire_gris" type="text" size="14" name="montantAchatFournisseur6" value="0" readonly="true"/>
    <input type="hidden" size="6" name="tab_num_fournisseur1" value="6"/>
    <input type="hidden" size="6" name="id_fourniture_services1" value=""/>
    </td>

  2. #2
    Membre régulier Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut
    comprends rien :

    alors que ce code ne devrait jamais valider le formulaire, le formulaire est quand même valider ....
    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
     
     
    function ValidationSaisie() {
    	var somme_erreur = 0 ;
    	var erreur_devise = 0;
    	var erreur_fournisseur = 0;
     
    		var nb_fournisseurs = document.getElementById("nb_fournisseurs").value;
    		nb_fournisseurs = parseInt(nb_fournisseurs);
     
    		var j;
    		if (nb_fournisseurs > 1) {
    			for (j=1; j< (nb_fournisseurs+1); j++) 
    			{
    				num_fournisseur_utilise = document.getElementById("tab_num_fournisseur"+j).value;
    				alert ('num_fournisseur_utilise '+num_fournisseur_utilise );
    			}
     
    			}
     
     
     
    	return false
     
     
     
    }

  3. #3
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    <input type="hidden" size="6" name="tab_num_fournisseur1" value="6"/>
    <input type="hidden" size="6" name="id_fourniture_services1" value=""/>
    ajoute des id (tu as des attributs name mais pas d'id)

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    oui il a raison pour les id^^


    Et essaie de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var tabNumFournisseur='tab_num_fournisseur'+j;
     
    var valeur_num_fournisseur_utilise = document.getElementById(tabNumFournisseur).value;

Discussions similaires

  1. Fonction de validation de formulaire soumet toujours le formulaire
    Par psyghoria dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 04/12/2012, 08h30
  2. [RegEx] Fonction de validation de formulaire
    Par pleug dans le forum Langage
    Réponses: 0
    Dernier message: 19/04/2010, 20h28
  3. [AJAX] valider un formulaire avec une fonction ajax
    Par freums dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 18/02/2008, 11h34
  4. Validation de formulaire recherche avec fonction javascript
    Par Cdic dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 19/01/2006, 10h52
  5. appel de fonction sur validation de formulaire
    Par PAYASS59 dans le forum Langage
    Réponses: 15
    Dernier message: 17/01/2006, 10h09

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