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 :

Keypress event permettre de saisir seulement des nombres


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Par défaut Keypress event permettre de saisir seulement des nombres
    Bonjour,
    J'aimerai interdire de saisir n'importe quelle autre caractères que les nombres, j'utilise une simple regexp, bon ça bloque les autres caractères mais en même temps, ça ne donne pas la main pour modifier ce qu'on a saisie (s'il s'agit des nombres, puisqu'ils ne sont pas interdit )
    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
     
    .....
     function noChars(e){
          var keynum
          var keychar
          var numcheck
     
    if(window.event) // IE
    {
       keynum = e.keyCode
    }
     else if(e.which) // Netscape/Firefox/Opera
    {
      keynum = e.which
    }
    keychar = String.fromCharCode(keynum);
    numcheck = /[^0-9]/;
     
    return !numcheck.test(keychar) ;
    }
     
     
    //  -->
     
    </script>
    </head>
    <body>
    <input type ="text" id="test_" onKeyPress="return noChars(event);" >
    ....
    S"il y a une autre façon de faire, ça sera aussi intéressant
    Merci

  2. #2
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Je ne suis pas sûr d'avoir bien compris ton énoncé... mais est-ce que :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type ="text" id="test_" onKeyPress="if (noChars(event)) return false;" >
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // début de la fonction noChars() ...
    return numcheck.test(keychar) ; // ici j'ai seulement retiré la négation pour ne pas alourdir le code
    }
    ne fonctionnerait pas mieux ?

  3. #3
    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
    Billets dans le blog
    20
    Par défaut
    @RV : Non, la méthode de witch est bonne, à une chose près :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return !numcheck.test(keychar);
    Le ! fait que tu renvoies false si c'est un chiffre et true sinon, donc du coup, tu n'acceptes que les non chiffres
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Ok bovino je te fais confiance sur la structure je remballe mon if

    par contre pour la négation, je viens de refaire le "trajet" deux fois et... je crois bien pourtant que sa fonction ne renvoie false que pour les non-chiffres comme prévu... (ne pas oublier la négation dans les crochets de la regexp ^^)

  5. #5
    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
    Billets dans le blog
    20
    Par défaut

    C'est pas mon jour pour les regExp !!! J'avais visuellement inversé le [ et le ^ !
    Et en plus, ça me perturbait un peu !
    Mais bon... passer par une double négation...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    numcheck = /\d/;
     
    return numcheck.test(keychar) ;
    me semble du coup plus simple !

    RV !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre éclairé
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Par défaut
    Salut
    Merci pour vos réponses, mais il parait que je ne suis pas assez claire....
    le problème dans ce bout de code est que même si ça ne permet de saisir que des nombres, ça ne permet pas de modifier (effacer) ce qu'on a saisie, ce qui n'est pas normal, c'est comme si ça devient disabled...

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

Discussions similaires

  1. [XL-2010] Exécuter une macro seulement dans les feuilles nommées par des nombres.
    Par baptou42 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/05/2014, 16h40
  2. Fonction JS pour saisir seulement des chiffres
    Par teen6517 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/05/2011, 14h10
  3. Créer fonctions pour saisir des nombres
    Par odsen.s dans le forum C
    Réponses: 34
    Dernier message: 30/04/2007, 19h34
  4. Creation d'un composant pour saisir des nombres
    Par Sylmandel dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 05/06/2006, 10h09
  5. Réponses: 3
    Dernier message: 08/09/2003, 15h06

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