Bonjour,
Je remets en route une vieille application qui n'a plus servi depuis 2 ans et qui était maintenue par une ex-collègue.
Je précise que je ne suis pas spécialiste de Java et encore moins des techniques modernes liées à ce langage.
L'application comprend un formulaire de saisie avec un contrôle des champs obligatoires, des champs numériques et des champs à mini et maxi.
Le bug, c'est que même avec un formulaire correctement renseigné, l'application renvoie ces erreurs :
Ce qui cloche, c'est que, par exemple, le champ du nom du module n'est évidemment pas un champ qui attend un nombre et cette erreur ne devrait pas apparaître.Nom du module : champ numérique. Veuillez saisir un nombre.
Responsable 1 : champ numérique. Veuillez saisir un nombre.
Nombre min de stagiaires (> 0) : vous ne respectez l'intervalle de valeurs autorisé.
Nombre max de stagiaires (>= min stagiaires) : vous ne respectez l'intervalle de valeurs autorisé.
Mot de passe : champ numérique. Veuillez saisir un nombre.
Confirmation du mot de passe : champ numérique. Veuillez saisir un nombre.
Voici le bout de code JSP concernant le champ du nom du module :
Code JSP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <span>Intitulé du module <b><span id="message2" class="red"><sup>(*)</sup></span></b> : <span class="annotation">100 caract. max</span> <br><span class="compteurCaracteres"><span id="nbCaracFI_NOM_LB">0</span> caractère(s) saisi(s)</span> <!-- Message d'erreur si nom module vide --> <span id="messFI_NOM_LB" style="color:red;visibility:hidden;font-weight:bold"> <img src="<%=request.getContextPath()%>/images/stop.png" border="0" alt="" title=""> Saisissez un intitulé de module </span> <br><input type="text" size="100" name="FI_NOM_LB" id="FI_NOM_LB" maxlength="100" value="<%=utilitaires.strReplaceCaracteresSpeciauxHTML(maFiche.getFI_NOM_LB())%>" onkeyup="compteCaracteres('FI_NOM_LB','nbCaracFI_NOM_LB', 100)"> </span>
Et voici le bout de code qui teste les champs numérique et qui construit le message d'erreur obtenu :
Code JSP : 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 for(var i = 0; i < f.length; i++) { var e = f.elements[i]; // Code faisant un premier contrôle sur les champs obligatoires vides puis... // Recherche maintenant les champs supposés numériques if (e.numeric || (e.min != null) || (e.max != null)) { var v = Number(e.value); if (isNaN(v)) { // Si elle contient quelque chose alors il y a eu des erreurs intitule_obj_courant = recupNom(e); empty_fields += "\n " + intitule_obj_courant + " champ numérique. Veuillez saisir un nombre."; // Affichage du message d'erreur correspondant document.getElementById("mess"+ e.name).style.visibility="visible"; } else { // c'est du numérique donc on vérifie les contraintes au niveau des valeurs : if (((e.min != null) && (v < e.min)) || ((e.max != null) && (v > e.max))) { // Si elle contient quelque chose alors il y a eu des erreurs intitule_obj_courant = recupNom(e); empty_fields += "\n " + intitule_obj_courant + " vous ne respectez l'intervalle de valeurs autorisé."; // Affichage du message d'erreur correspondant document.getElementById("mess"+ e.name).style.visibility="visible"; } else { // On stocke les variables MIN et MAX stagiaires dans des variables pour pouvoir // vérifier à la fin que MAX >= MIN. if (e.name == "FI_MAXI_NB") { max_stag = v ; } if (e.name == "FI_MINI_NB") { min_stag = v ; } // Le message ne doit pas ou plus s'afficher document.getElementById("mess"+ e.name).style.visibility="hidden"; } } } }
Je me suis attardé sur le premier if et notamment sur e.numeric.
J'ai essayé de remplacer la ligne par celle-ci, sans succès :
Normalement, les champs de type text ne devraient pas être concernés par ce test, non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (e.type == 'numeric' || (e.min != null) || (e.max != null))
Partager