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 :

Fonction JS pour saisir seulement des chiffres


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut Fonction JS pour saisir seulement des chiffres
    Bonjour tout le monde

    Je souhaite faire un fonction en JS qui me permette de contrôler la saisie dans mes formulaires.

    J'ai trouvée une fonction qui fait sa très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    onKeypress="if(!isNS4)
    {
    if(event.keyCode < 45 || event.keyCode > 57)
    event.returnValue = false;
    }
    else
    {
    if(event.which < 45 || event.which > 57)
    return false;
    }"
    Mais elle marche trop bien cette fonction car elle ne me laisse même pas saisir ma virgule quand c'est une nombre a virgule (attention c'est bien une virgule non un point que je dois autorizé)

    Merci de votre aide

    ha oui il y a d'autre partie de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script>
    //verify for netscape/mozilla
     
    var isNS4 = (navigator.appName=="Netscape")?1:0;
     
    </script>
    Voila je crois que j'ai rien oublié
    Merci

  2. #2
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    En gros tu veux qu'on fasse la recherche pour toi c'est ça ?

    => http://lmgtfy.com/?q=javascript+keycode
    => http://www.cambiaresearch.com/c4/702...Key-Codes.aspx
    => http://www.asquare.net/javascript/tests/KeyCode.html

    PS :
    Le premier lien est en anglais mais je te laisse le soin de toi-même rechercher dans un dictionnaire ou sur un site de traduction comment on dit 'virgule'.

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut
    Loceka je trouve que tu es quand même un peu dur

    j'ai quand même montré que j'avais fait des recherches ...

    pour la virgule
    le event.which est 44 et le event.keyCode est 0

    Pour la touche Del
    le event.which est 8 et le event.keyCode est 8

    malgret sa je n'arrive pas à modifier le code pour y ajouter ces modifications

    mon code actuelle est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    onKeypress="if(!isNS4)
    {
    if(event.keyCode == 8 || event.keyCode == 0) event.returnValue = false;
    }
    else{if(event.which == 8 || event.which == 44 || event.which == 48 || event.which == 49 || event.which == 50 || event.which == 51 || event.which == 52 || event.which == 53 || event.which == 54 || event.which == 55 || event.which == 56 || event.which == 57)
    return false;
    }"

  4. #4
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Citation Envoyé par teen6517 Voir le message
    pour la virgule
    le event.which est 44 et le event.keyCode est 0

    Pour la touche Del
    le event.which est 8 et le event.keyCode est 8
    Malheureusement c'est pas si simple

    Teste plusieurs navigateurs avec cette page : http://www.asquare.net/javascript/tests/KeyCode.html

    Ce que tu as dit est vrai pour Firefox, ça ne l'est pas pour IE ni Opera (j'ai pas testé les autres).

    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
    /* Virgule : */
    /*       Virgule       */
    // IE :
                     onKeyDown   onKeyPress  onKeyUp
    event.keyCode  : '188'       '44'        '188'
    event.which    : 'undefined' 'undefined' 'undefined'
     
    // FF :
                     onKeyDown   onKeyPress  onKeyUp
    event.keyCode  : '188'       '44'        '188'
    event.which    : '188'       '44'        '188'
     
    // Opera :
                     onKeyDown   onKeyPress  onKeyUp
    event.keyCode  : '188'       '44'        '188'
    event.which    : '188'       '44'        '188'
     
    /*      Backspace      */
    // IE :
                     onKeyDown   onKeyPress  onKeyUp
    event.keyCode  : '8'                     '8'
    event.which    : 'undefined'             'undefined'
     
    // FF :
                     onKeyDown   onKeyPress  onKeyUp
    event.keyCode  : '8'         '8'         '8'
    event.which    : '8'         '8'         '8'
     
    // Opera :
                     onKeyDown   onKeyPress  onKeyUp
    event.keyCode  : '8'         '8'         '8'
    event.which    : '8'         '8'         '8'
    Tu ne peux donc pas utiliser keyPress sur IE pour détecter l'effacement.

    Sinon une fois que tu connais les codes à utiliser c'est relativement simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    onKeypress="if(!isNS4) {
      if(event.keyCode != 8 && (event.keyCode < 44 || event.keyCode > 57))
        event.returnValue = false;
    }
    else {
      if(event.which != 8 && (event.which < 44 || event.which > 57))
        return false;
    }"
    Mais encore une fois, fais-le sur un autre événement que keyPressed

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut
    moi je n'ai trouvé que
    onKeyDown et onKeyUp

    et onKeyPress qui d'après se que j'ai compris fait l'union des des deux précédent

    tu conseil d'utilisé quoi??

  6. #6
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Le plus simple serait d'utiliser onKeyDown, un return false empêcherait l'écriture du résultat.

    Par contre les "codes" seraient différents, comme tu peux le voir. Pour la virgule ce serait 188 au lieu de 44 par exemple.

Discussions similaires

  1. expressions reguliers pour un tester des chiffres
    Par Mobistar dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 06/08/2008, 14h41
  2. taper seulement des chiffres dans <input>
    Par AmineDev9 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 05/05/2008, 21h05
  3. taper seulement des chiffres dans <input>
    Par AmineDev9 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 04/05/2008, 03h24
  4. Seulement des chiffres firefox
    Par zulot dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/08/2007, 12h20
  5. [VB.NET] Textbox -> seulement des chiffres sans API?
    Par Pleymo dans le forum Windows Forms
    Réponses: 10
    Dernier message: 25/04/2005, 14h00

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