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 :

Controle champ d'un formulaire


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 28
    Points
    28
    Par défaut Controle champ d'un formulaire
    Bonjour

    J'ai un petit problème avec le controle de mon formulaire que je développe sous asp.

    voici le type de controle que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /**Méthode vérifiant que la valeur saisie soit bien un entier*/
       function isInteger(valeur,formulaire){
          var re = /^\d+$/;  
           if(!re.test(valeur)){
    	  	alert("Vous n'avez pas saisie d'entier !!!");
               return false;
          }
    	   return true;
       }
    et voici un epartie du code de mon formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.write "<td><input type=textarea SIZE="&length&" MAXLENGTH="&length&" name="&champ&" onchange='javascript:isInteger(this.value)'> valeur entière"
    comme vous pouvez le remarquer je récupere les valeur a l'aide d'une requete.

    Le probleme avce ce controle c'est que le message d'erreur apparait et averti l'utiisateur qu'il sait tromper, mais je voudrait en + qu'il efface le champ ou il s'est trompé et repositionne le cureur sur ce champ.

    Si quelqu'un voit comment faire ou veut des précision faite le savoir :p

    Merci

  2. #2
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut Re: Controle champ d'un formulaire
    Citation Envoyé par ekinoxe
    response.write "<td><input type=textarea SIZE="&length&" MAXLENGTH="&length&" name="&champ&" onchange='javascript:isInteger(this.value)'> valeur entière"
    Le javascript est complétement inutile....

    Sinon, en modifiant légerement ton code (en passant l'element plutot que sa valeur):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
       function isInteger(element){
          var re = /^\d+$/;  
           if(!re.test(element.value)){
    	  alert("Vous n'avez pas saisie d'entier !!!");
               element.value='';
               element.focus();
               return false;
          }
          return true;
       }
    Ca devrait le faire (en tout cas pas loin...)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 28
    Points
    28
    Par défaut
    ok je vais tester, par contre que faut t'il mettre en parametre sur l'événement Onchange ? on vire this.value je pense non ?

  4. #4
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par ekinoxe
    ok je vais tester, par contre que faut t'il mettre en parametre sur l'événement Onchange ? on vire this.value je pense non ?
    Tu mets this (l'element du formulaire) comme paramètre d'appel de la méthode sur le onchange.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 28
    Points
    28
    Par défaut
    bon alors bilan apres essai :
    zone de texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><input type=textarea SIZE="&length&" MAXLENGTH="&length&" name="&champ&" value="&data&" onchange='isInteger(this)'> valeur entière
    script JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     function isInteger(element){
          var re = /^\d+$/;  
           if(!re.test(element.value)){
    	  	alert("Vous n'avez pas saisie d'entier !!");
    		   element.value='';
               element.focus(); 
               return false;
          }
    	   return true;
       }
    - Le champ est bien effacé en cas d'erreur, mais le focus ne marche pas

    Il faut savoir que on formulaire comporte un nombre de champ variable donc lorsque je rempli le champ 1 de type entier avec la valeur "abc" puis je clique sur le champ 2, le message d'ereur apparait, le champ 1 est effacé mais le focus reste sur le champ 2

  6. #6
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par ekinoxe
    Il faut savoir que on formulaire comporte un nombre de champ variable donc lorsque je rempli le champ 1 de type entier avec la valeur "abc" puis je clique sur le champ 2, le message d'ereur apparait, le champ 1 est effacé mais le focus reste sur le champ 2
    Typiquement un problème de priorité.

    Remplace
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    window.setTimeout(function(){element.focus();},200);
    ça devrait marcher (en fait, c'est un problème d'ordre en changement de focus par le script et changement par le navigateur lié à l'action utilisateur).

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 28
    Points
    28
    Par défaut
    OK merci sa marche nikel, par contre peut tu m'expliquez un peu le role du timer pour le focus ??

    Par contre maintenant je vais devoir gérer aussi la possibilité de laisser un champ vide si la BDD l'accepte. Mais sa c'est une autre histoire ^^

    Merci a toi en tout cas

  8. #8
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par ekinoxe
    OK merci sa marche nikel, par contre peut tu m'expliquez un peu le role du timer pour le focus ??
    Tout simplement la chronologie des evenements:
    1. L'utilisateur demande un changement de champs (avec Tab ou la souris)
    2. declenchement de onchange: le champ est vérifié, si nécessaire le focus remis sur ce champ
    3. Changement du focus par le navigateur, suite à la demande utilisateur, au champ suivant


    Donc, il faut un timeout pour que la remise en place du focus ne se fasse qu'après le point 3.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 28
    Points
    28
    Par défaut
    Bonjour, je reviens sur mon sujet car en fait i y a quelque chose qui me chagrine avec cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function isInteger(element){ 
          var re = /^\d+$/;  
           if(!re.test(element.value)){ 
            alert("Vous n'avez pas saisie d'entier !!"); 
             element.value=''; 
               element.focus(); 
               return false; 
          } 
          return true; 
       }
    Exemple d'utilisaton :
    zone de saisie ID (entier requis)
    zone de saisie nom (varchar)

    1- on entre "abc" dans la zone ID
    2- on place le curseur dans la zone NOM
    3- affichage du message d'erreur, supression de "abc", focus sur la zone ID
    4- on place le curseur dans la zone NOM alors que rien est rempli dans ID
    5- affichage du message d'erreur, supression de "abc", focus sur la zone IDCLIENT
    6- on place le curseur dans a zone NOM alors que rien est rempli dans IDCLIENT
    7- Le curseur se place bien dans la zone NOM

    Il faudrait en fait supprimer les étapes 5 et 6. Ne pas faire de controle si la cellule est vide en fait

    Si vous n'avez pas tout compris faite signe

  10. #10
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par ekinoxe
    4- on place le curseur dans la zone NOM alors que rien est rempli dans ID
    5- affichage du message d'erreur, supression de "abc", focus sur la zone IDCLIENT

    Si vous n'avez pas tout compris faite signe
    Je comprends la suppression de "abc" si il n'y a rien dedans

    Sinon, il suffit de rajouter le test comme quoi il y a qqch:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(element.value.length>0&&(!re.test(element.value))){

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 28
    Points
    28
    Par défaut
    pas bete, j'avais pas pensé a faire un controle sur la taille de la zone.


    Merci grand chef

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

Discussions similaires

  1. Controle des champs d'un formulaire
    Par indefini dans le forum Langage
    Réponses: 17
    Dernier message: 09/01/2009, 10h06
  2. Control champs formulaire + modification src image
    Par sooprano dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/12/2008, 17h03
  3. Réponses: 4
    Dernier message: 17/02/2008, 15h54
  4. controler les champs d'un formulaire
    Par ideal23 dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 18/12/2007, 18h48
  5. controler le champ d'un formulaire
    Par leonlegrand dans le forum Access
    Réponses: 6
    Dernier message: 17/07/2006, 11h28

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