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 :

obliger la saisie de 3 lettres puis de 4 entiers


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 50
    Par défaut obliger la saisie de 3 lettres puis de 4 entiers
    salut à tous,

    je souhaiterai dans un champ de mon formulaire, obliger l'utilisateur à d'abord rentrer 3 lettres puis 4 entiers dans l'input type text
    exemple : ABC2145

    ne connaissant pas grand chose au javascript je m'en remet à vous

    merci d'avance aux futures reply

    Cordialement

    ps : est il possible aussi d'imposer un caractère spécial dans un champ ?
    je souhaiterai imposer un "/" à la 5eme position par exemple : " / ".

  2. #2
    Membre expérimenté Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Par défaut
    Il est possible de tester chaque touche tapee avec une methode comme decrite dans ce post, mais ce n'est pas la verite absolue catr le copier-coller n'est pas gere. Il vaut mieux tester le contenu de ton champ avec une expression reguliere avant de poster. (l'un n'empeche pas l'autre).
    ++
    Fred.

  3. #3
    Membre éclairé Avatar de MANU_2
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 417
    Par défaut
    Exact sauf si tu empêche le copier/coller

  4. #4
    Membre averti
    Inscrit en
    Août 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 50
    Par défaut
    Citation Envoyé par fred777888999
    Il est possible de tester chaque touche tapee avec une methode comme decrite dans ce post, mais ce n'est pas la verite absolue catr le copier-coller n'est pas gere. Il vaut mieux tester le contenu de ton champ avec une expression reguliere avant de poster. (l'un n'empeche pas l'autre).
    ++
    Fred.
    merci pour ta réponse, j'étais effectivement déjà tombé sur le 1er lien donné, mais mon problème se situe plutot au niveau de checker seulement les 3 premiers caractères puis d'appliquer une autre règle pour les 4 derniers.

  5. #5
    Membre averti
    Inscrit en
    Août 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 50
    Par défaut
    ok j'ai saisi le principe de regexp, mais par contre je ne vois pas comment l'implenter dans mon champ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type=text name=FromFabric MAXLENGTH=11 onKeypress="?????">

  6. #6
    Membre expérimenté Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Par défaut
    Le checker, tu peux le faire en bouclant sur tous tes champs dans une fonction "onSubmit()"
    Un exemple simple avec un controle de date sur le champ toto :
    (bien noter le return check() dans la fonction, pas juste check() )
    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
     
    <script type="text/javascript">
    function check() {
        expr = /^([0-2]\d|30|31)\/(01|02|03|04|05|06|07|08|09|10|11|12)\/(19|20)\d\d$/;
       if ( !document.getElementById("toto").value.match(expr) ) {
          alert("Vous devez saisir une date");
          return false;
       }
       return true;
    }
    </script>
    <form id="formulaire" onSubmit="return check()" action=".." method="..">
    <input type="text" id="toto">
    <input type="submit">
    </form>

  7. #7
    Membre averti
    Inscrit en
    Août 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 50
    Par défaut
    ok merci, pour l'instant ça marche pas mais j'y vois plus clair

    j'ai fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script type="text/javascript"> 
    function check() { 
        expr = /{3}[A-Za-z]\d/; 
       if ( !document.getElementById("FromMotor").value.match(expr) ) { 
          return false; 
       } 
       return true; 
    } 
    </script> 
     
    ....
     
    <input type=text id=FromMotor name=FromMotor MAXLENGTH=9 onKeypress="return check()">

  8. #8
    Membre expérimenté Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Par défaut
    Parfait, c'est bien l'idee, mais c'est pas sur le onKeyPressed qu'il faut le faire mais bien a la validation de ton formulaire. Si tu le fait a chaque touche tapee, ca ne peut pas marcher car l'expression n'est vraie que quand tu as fini ta saisie. Comme tu bloque la saisie de chaque touche si elle est fausse, tu peux pas t'en sortir. Il faut donc le faire sur le onSubmit du formulaire comme l'exemple que je t'ai donne et/ou sur le onBlur du champ. En completant un peu l'exemple ci-dessus :
    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
     
    <script type="text/javascript">
    function check() {
        expr = /^([0-2]\d|30|31)\/(01|02|03|04|05|06|07|08|09|10|11|12)\/(19|20)\d\d$/;
       if ( !document.getElementById("toto").value.match(expr) ) {
          alert("Vous devez saisir une date");
          document.getElementById("toto").focus();
          return false;
       }
       return true;
    }
    </script>
    <form id="formulaire" onSubmit="return check()">
    <input type="text" id="toto" onBlur="return check()">
    <input type="text" id="titi">
    <input type="submit">
    </form>
    qui est loin d'etre parfait car il effectue le test beaucoup trop de fois, je te laisse le soin de l'adapter.
    ++
    Fred.

  9. #9
    Membre averti
    Inscrit en
    Août 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 50
    Par défaut
    ok ça marche, même si j'esperais qu'il y aurait une soluce sur un "onkeypress"
    par contre mon expression régulière ne semble pas bonne

    merci pour ton aide

  10. #10
    Membre averti
    Inscrit en
    Août 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 50
    Par défaut
    ah si c'est bon en corrigeant comme suit : expr = /[A-Za-z]{3}[0-9]{6}/;
    merci encore

    je laisse ouvert au cas où une solution sur un "onkeypress" apparaisse

  11. #11
    Membre expérimenté Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Par défaut
    les expressions reguliere, c super puissant, mais c'est tout sauf simple. Cependant, une fois que tu les maitrise, tu peux avoir un tres bon controle de ce que l'utilisateur peux ou ne peux pas saisir avec.
    un excellent lien qui te permet de tester tes expressions regulieres et qui contient un exemple de consersion de dates fort instructif :
    expressions
    Si tu maitrise ca, tu deviendra alors un expert en conceptions de formulaires
    Un conseil, quand tu as trouve une expression reguliere qui fonctionne (comme celle que je t'ai donne pour les dates qui n'est pas terrible et dont je dois confesser ne pas etre l'auteur) garde la sous le coude (dans un bloc-notes par ex), elle te reservira forcement un jour...
    ++
    Fred.

  12. #12
    Membre averti
    Inscrit en
    Août 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 50
    Par défaut
    c'est vrai que c'est fort utile merci bien

  13. #13
    Membre expérimenté Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Par défaut
    maintenant que tu t'est un peu interesse a la question, je te donne la forme la plus simple d'expression reguliere qui devrait repondre a ton probleme :
    /\w\w\w\d\d\d\d/
    comme tu le vois dans la liste des possibilites de tes expressions, \w correspond a une lettre et \d un chiffre. Bien sur, il y a plein d'autres solutions pour parvenir a ce resultat.
    Bonne continuation.
    Fred.
    [edit] oups, dsl, j'avais meme pas vu que tu avait corrige tout seul ton expr reguliere, felicitations [/edit]

  14. #14
    Membre averti
    Inscrit en
    Août 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 50
    Par défaut
    Citation Envoyé par fred777888999
    maintenant que tu t'est un peu interesse a la question, je te donne la forme la plus simple d'expression reguliere qui devrait repondre a ton probleme :
    /\w\w\w\d\d\d\d/
    comme tu le vois dans la liste des possibilites de tes expressions, \w correspond a une lettre et \d un chiffre. Bien sur, il y a plein d'autres solutions pour parvenir a ce resultat.
    Bonne continuation.
    Fred.
    [edit] oups, dsl, j'avais meme pas vu que tu avait corrige tout seul ton expr reguliere, felicitations [/edit]
    oui en fait c'était 3 lettres + 6 chiffres mais bon ça on s'en fou
    par contre le \w représente tous les alphanumériques non ? ça ne marcherait pas dans mon cas pour ne limiter qu'à des lettres, enfin avec /[A-Za-z]{3}[0-9]{6}/ cela fonctionne

    edit : pour ton edit

  15. #15
    Membre expérimenté Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Par défaut
    Exact, ma solution n'est donc pas terrible mais la tienne fonctionne tres bien
    Un ptit click sur et je serai encore plus content
    ++
    Fred.

  16. #16
    Membre averti
    Inscrit en
    Août 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 50
    Par défaut
    allez je te dois bien ça pour ta précieuse aide
    a+

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

Discussions similaires

  1. [AJAX] liste de chois à partir de la saisie d'une lettre avec ajax
    Par ineskh dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/04/2008, 15h11
  2. Réponses: 3
    Dernier message: 01/02/2007, 12h08
  3. empecher saisis autre que lettres dans TLabeledEdit
    Par nou366 dans le forum Delphi
    Réponses: 4
    Dernier message: 04/06/2006, 12h56
  4. obliger la saisie dans une zone de texte
    Par mat75019 dans le forum Access
    Réponses: 5
    Dernier message: 02/05/2006, 16h59
  5. [JTextField] Limiter la saisie a des lettres.
    Par Cyborg289 dans le forum Composants
    Réponses: 4
    Dernier message: 16/09/2005, 10h40

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