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 :

contrôle sur plusieurs champs Input


Sujet :

JavaScript

  1. #1
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2005
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 315
    Points : 138
    Points
    138
    Par défaut contrôle sur plusieurs champs Input
    Bonjour,
    j'essaie de faire un contrôle sur plusieurs champs Input, qui ne fonctionne pas très bien !
    j'essaie en effet de vérifier à chaque fois que l'on quitte le composant, qu'il n'est pas vide et que sa taille de dépasse pas un certain nombre de caractère:

    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
     
    function checklength(){
    	var f= document.forms[0];
     
    	var nom=f.elements['nom'].value;
    	var adresse=f.elements['adresse1'].value;
    	var adresse2=f.elements['adresse2'].value;
     
    if( nom.length >35)
    		{
    			alert("35 caractères maximum pour le champ: <%=res.getKeyValue("nom")%>");
    			f.elements['nom'].focus();
    			return;
    		}
    	if( adresse.length >28)
    		{
    			alert("28 caractères maximum le champ: <%=res.getKeyValue("adresse1")%> ");
    			f.elements['adresse1'].focus();
    			return;
    		}
    	if( adresse1.length >28)
    		{
    			alert("28 caractères maximum pour le champ: <%=res.getKeyValue("adresse2")%>");
    			f.elements['adresse2'].focus = true;
    			return;
    		}
     
    }
    et quand je met la fonction sur un évènement onblur, il ne fonctionne pas dans tous les cas !

    Est-ce une bonne façon de procéder !
    dois je le faire composant par composant ?

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    il faudrait voir l'appel de ta fonction, ainsi que les éléments HTML concernés.
    Quelques remarques quand même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var f= document.forms[0];
    il vaudrait mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var f= document.forms['name_du_form'];
    surtout si il risque d'y en avoir plusieurs dans la page.
    Logiquement ta fonction devrait faire un "return false;" en cas d'erreur et un "return true;" si tout est OK.
    Mais encore une fois, tout dépend de comment tu l'appelles ...

    Pourquoi utiliser cette syntaxe (fausse)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f.elements['adresse2'].focus = true;
    alors que la syntaxe est bonne pour les autres champs ?

    Pour un contrôle de champ, onchange est plus approprié que onblur (pourquoi refaire le contrôle s'il n'y a pas eu de modificcation ?). Mais comme tu contrôle tous les champs en même temps, il serait plus logique d'appeler cette fonction sur le onsubmit du tag <form>. Dans ce cas, les "return true/false" sont obligatoires (pour bloquer l'envoi du form en cas d'erreur détectée).
    A noter : ce type de contrôle doit être refait sur le serveur pour éviter les surprises (JS peut avoir été désactivé).

    Et enfin
    Citation Envoyé par paolo2002
    et quand je met la fonction sur un évènement onblur, il ne fonctionne pas dans tous les cas !
    Je suis sûr qu'il y a moyen d'être plus précis

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2005
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 315
    Points : 138
    Points
    138
    Par défaut contrôle sur plusieurs champs
    pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    f.elements['adresse2'].focus = true;
    c'est bien une erreur de ma part.

    Pour faire le test lorsque je soumet à la form, il ne me parait pas judicieux car il soumettrait tous les tests !

    mais bon, je refais quelques tests pour voir le fonctionnement !
    meci

  4. #4
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2005
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 315
    Points : 138
    Points
    138
    Par défaut contrôle sur plusieurs champs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Envoyé par paolo2002
    et quand je met la fonction sur un évènement onblur, il ne fonctionne pas dans tous les cas !
    pour être plus précis, lorsque je fais directement sur le dernier champ, le contrôle n'est pas pris en compte.
    il le fait apparemment successivement !

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

Discussions similaires

  1. contrôle des doublons sur plusieurs champs
    Par christy1 dans le forum Modélisation
    Réponses: 3
    Dernier message: 09/12/2011, 14h13
  2. Accepeter plusieurs mail sur un champs input
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/03/2009, 16h51
  3. Contrôle de plusieurs champ sur un ajout de ligne
    Par nawak.seb dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/11/2008, 11h31
  4. [CR] Groupement dynamique sur plusieurs champs paramètrés
    Par CDRIK dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 07/06/2004, 17h55
  5. recuperer les id sur plusieurs champs
    Par matN59 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/03/2004, 10h23

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