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ôler la saisie


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut contrôler la saisie
    Bonjour a tous,

    je suis en ce moment en plein projet de fin d'études ... et je "Bloque" face a un problème que je n'avais pas en Delphi

    enfait, je voudrais empecher l'utilisateur d'introduire une valeur interdite par une contrainte d'integrité, par exp : touche alphabétique dans un champ numérique)

    le scénario est simple, dans un champ de saisie <input type="text" /> qui ne doit contenir que des chiffres, si l'utilisateur saisie au clavier une lettre alphabétique, la saisie doit etre automatiquement bloquée par une fonction JavaScript.

    a quoi doit ressembler ma fonction ?

    merci a tout ceux qui veulent aider
    AminE

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Merci de faire une petite recherche dans la FAQ !

  3. #3
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut
    ce n'est pas ce que je cherche vraiment, car il m'empeche aussi de supprimer, et je n'arrive pas a modifier son code, car je voudrais aussi autoriser des points pour les virgules flottantes et des tirets pour les dates...


    sinon, je vous remercie et j'attend davantages réponses

    PS : vous ne faites pas parties des développeurs PikXDK ?

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Points : 170
    Points
    170
    Par défaut
    Bonjour,

    Essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" onKeypress="if(event.keyCode > 31 && (event.keyCode < 45 || event.keyCode > 57)) event.returnValue = false; if(event.which > 31 && (event.which < 45 || event.which > 57)) return false;" />

  5. #5
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Citation Envoyé par jamdinhe Voir le message
    je voudrais aussi autoriser des points pour les virgules flottantes et des tirets pour les dates...
    c'est exactement ce que tu cherches, sauf que c'est à toi de modifier la condition. l'exemple présenté n'autorisent que les chiffres, à toi d'étendre à ta liste de caractères autorisées.

  6. #6
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par bigboomshakala
    c'est exactement ce que tu cherches, sauf que c'est à toi de modifier la condition. l'exemple présenté n'autorisent que les chiffres, à toi d'étendre à ta liste de caractères autorisées.
    C'est vrai, mais je ne réussis pas a trouver un tableau qui me donne toute la liste des "event.keycode"... le peut que j'ai trouvé me donne plusieurs "event.keycode" pour une même touche (diference des navigateurs) ...

    Ce que je cherche a faire, c'est come je faisait en delphi, je compare a la valeur de la touche pressée et non pas a son "event.keycode".

    Merci encore,

    j'attend votre aide

  7. #7
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    le keycode c'est simplement le code ascii (qui correspond à la valeur de la touche pressée...)
    Ce que je cherche a faire, c'est come je faisait en delphi, je compare a la valeur de la touche pressée et non pas a son "event.keycode".
    quelle autre valeur tu penses pouvoir récupérer pour la touche entrée, la tabulation ou les flèches par exemple?

  8. #8
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Merci de faire une petite recherche dans la FAQ !
    A noter que l'entrée dans la FAQ est fausse (ou tout du moins, fonctionne partiellement uniquement).

    Citation Envoyé par jamdinhe Voir le message
    C'est vrai, mais je ne réussis pas a trouver un tableau qui me donne toute la liste des "event.keycode"... le peut que j'ai trouvé me donne plusieurs "event.keycode" pour une même touche (diference des navigateurs) ...

    Ce que je cherche a faire, c'est come je faisait en delphi, je compare a la valeur de la touche pressée et non pas a son "event.keycode".
    En delphi, c'est facile parce que t'as un runtime unique. En javascript, ce n'est pas le cas car chaque navigateur implémente le truc à sa façon, donc c'est une vraie galère.

    Pour avoir fait ce genre de trucs pas plus tard qu'hier, je ne peux que te conseiller ce site pour voir les différences dans la gestion des événements selon les navigateurs.

    PS: utilise onkeydown et non onkeypress qui est très mal géré selon les navigateurs.

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par DoubleU Voir le message
    A noter que l'entrée dans la FAQ est fausse (ou tout du moins, fonctionne partiellement uniquement).

    Pourrais-tu en dire plus, car je viens de tester (IE6/7 FF2 Opera Safari Chrome) et je n'ai pas trouvé d'erreur...

  10. #10
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Petit code trouvé ici sur le site (merci les modérateurs pour votre boulot )

    En l'occurrence ce code est de Bisûnûrs, Responsable
    (X)HTML/CSS

    dans le head:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /*Fonction qui ne permettra que la saisie de chiffres dans un input*/
    function chiffres(objInput){
       var reg = /^[0-9]*$/;
     
       if(!reg.test(objInput.value)){
          objInput.value = objInput.value.substring(0,objInput.value.length-1);
       }
    }
    dans ton input:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CODE POSTAL<sup>*</sup>: <input type="text" name="code_postal" id="code_postal" maxlength="5" onkeyup="chiffres(this)" onkeydown="chiffres(this)"/><br/>
    La g pris un de mes imputs pour l'exemple

    Tu a plus qu'a mettre a ta sauce

  11. #11
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Apres avec la regex tu fais ce que tu veux

    Pour autoriser les lettres minuscules:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function chiffreslettres(objInput){
       var reg = /^[a-z]*$/;
     
       if(!reg.test(objInput.value)){
          objInput.value = objInput.value.substring(0,objInput.value.length-1);
       }
    }
    majuscules:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function chiffreslettres(objInput){
       var reg = /^[A-Z]*$/;
     
       if(!reg.test(objInput.value)){
          objInput.value = objInput.value.substring(0,objInput.value.length-1);
       }
    }
    Minuscules et majuscules:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function chiffreslettres(objInput){
       var reg = /^[a-zA-Z]*$/;
     
       if(!reg.test(objInput.value)){
          objInput.value = objInput.value.substring(0,objInput.value.length-1);
       }
    }
    et ainsi de suite

  12. #12
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Au temps pour moi, j'avais oublié d'écrire un truc dans mon test ^^

  13. #13
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut
    Merci a touuuuuuuuuuuuus

    tout ce que je reçoit est vivement utile et il Fonctionne,

    en même temps, j'ai trouvé sur le net un trés beau script qui fait ce que je cherche sauf que je ne réussis pas a le modifier afin de n'autoriser qu'un seul Point pendant la saisie...

    Voici le Code

    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
    29
    30
    31
    32
    33
    // copyright 1999 Idocs, Inc. http://www.idocs.com
    // Distribute this script freely but keep this notice in place
    function numbersonly(myfield, e, dec)
    {
    var key;
    var keychar;
     
    if (window.event)
       key = window.event.keyCode;
    else if (e)
       key = e.which;
    else
       return true;
    keychar = String.fromCharCode(key);
     
    // control keys
    if ((key==null) || (key==0) || (key==8) || 
        (key==9) || (key==13) || (key==27) )
       return true;
     
    // numbers
    else if ((("0123456789").indexOf(keychar) > -1))
       return true;
     
    // decimal point jump
    else if (dec && (keychar == "."))
       {
       myfield.form.elements[dec].focus();
       return false;
       }
    else
       return false;
    }
    si vous remarquer, je peut autoriser le point comme je peut le bloquer rien qu'en ignorant le paramètre "dec"a l'appel de la fonction.

    Merci a vous de m'aider a le modifier pour n'autoriser qu'une seule fois la saisie du point.

Discussions similaires

  1. [C# Datagrid] Comment contrôler la saisie d'un colonne ?
    Par kinou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/05/2006, 10h15
  2. Contrôler les saisies clavier
    Par Pragmateek dans le forum C
    Réponses: 8
    Dernier message: 06/05/2006, 18h17
  3. Contrôler la saisie dans un formulaire
    Par beegees dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/03/2006, 17h41
  4. contrôler la saisie
    Par devdébuto dans le forum C
    Réponses: 5
    Dernier message: 07/11/2005, 09h14
  5. Est-il possible de contrôler la saisie dans champ...
    Par hop&hop dans le forum Administration
    Réponses: 6
    Dernier message: 31/10/2005, 16h19

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