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>