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

Servlets/JSP Java Discussion :

Contrôle de champ numérique sur des champs texte


Sujet :

Servlets/JSP Java

  1. #1
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut Contrôle de champ numérique sur des champs texte
    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 :
    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.
    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.

    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&eacute; du module <b><span id="message2" class="red"><sup>(*)</sup></span></b> : &nbsp;&nbsp; <span class="annotation">100 caract. max</span>
    	<br><span class="compteurCaracteres"><span id="nbCaracFI_NOM_LB">0</span> caract&egrave;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">
    		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (e.type == 'numeric' || (e.min != null) || (e.max != null))
    Normalement, les champs de type text ne devraient pas être concernés par ce test, non ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Ouf ! Trouvé. C'était bien dans les tests qu'il y avait problème.

    Voici le code corrigé, pour info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (e.numeric || e.min || e.max)
     
    // et plus loin
     
    if ((e.min && v < e.min) || (e.max && v > e.max))
    C'était le != null et peut-être des parenthèses inutiles qui posaient problème.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. TCD avec champ calculé sur des champs nombre
    Par Scrabblouille dans le forum Excel
    Réponses: 0
    Dernier message: 06/10/2011, 20h16
  2. Index sur des champs texte
    Par BV123456 dans le forum Administration
    Réponses: 4
    Dernier message: 18/10/2010, 23h11
  3. [AC-2003] Regle de validation sur des champs dates dans des tables différentes
    Par ingal30 dans le forum VBA Access
    Réponses: 7
    Dernier message: 09/03/2010, 18h42
  4. filtre numérique sur un champ texte
    Par debdev dans le forum Access
    Réponses: 15
    Dernier message: 26/05/2006, 17h45
  5. Boucler sur des champs texte
    Par syl2095 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/11/2004, 16h15

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