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 :

n'autoriser que des nombres décimaux encore!


Sujet :

JavaScript

  1. #1
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut n'autoriser que des nombres décimaux encore!
    oui, je sais la question a été largement débattue.
    Je la repose quand même.

    2 choses en fait :

    1. Si on veut contrôler ce que saisit l'utilisateur par Javascript, quel événement est le plus approprié ?
    Il faut d'abord choisir entre onkeydown, onkeypress et onkeyup...
    et on est alors vulnérable à ce bon vieux copier-coller : il faudrait alors également contrôler le champ avec un onchange
    Pourquoi n'existe-t-il pas un événement du genre on_content_change qui réagirait simplement lorsque la valeur du champ change, et ce sans attendre la perte du focus ?

    2. Contrôlons alors que nous avons un nombre décimal:
    - on peut contrôler la touche avec keycode/which : faut alors permettre les chiffres [0-9], le point, le signe moins (qui ne devrait être autorisé qu'en première position mais qui doit obligatoirement être suivi d'un chiffre : je me suis déjà bien embêté avec ça!), et les touches du genre Entrée, backSpace, Ctrl ....
    - on peut contrôler la valeur du champ avec isNaN : mais alors qu'avec un onchange, parce que la saisie du signe moins va nous embêter sinon...


    bon, voila le genre de betises qui me prend la tete !

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par sebhm Voir le message
    1. Si on veut contrôler ce que saisit l'utilisateur par Javascript, quel événement est le plus approprié ?
    En cours de frappe : onkeyup (pour vérifier la saisie de caractères autorisés)
    En fin de saisie : onchange (pour vérifier le formatage, les plages valeurs éventuelles ...)
    Citation Envoyé par sebhm Voir le message
    Pourquoi n'existe-t-il pas un événement du genre on_content_change qui réagirait simplement lorsque la valeur du champ change, et ce sans attendre la perte du focus ?
    Parce que la valeur n'a changé qu'une fois le focus parti. Avant elle est "en cours de modification", et le nav ne peut pas lire dans tes pensées pour savoir si tu as fini ou si tu as encore quelque chose à taper.
    Réponse plus courte : "Parce que !"
    Citation Envoyé par sebhm Voir le message
    - on peut contrôler la valeur du champ avec isNaN : mais alors qu'avec un onchange, parce que la saisie du signe moins va nous embêter sinon...
    Et parseFloat() ?

    A+

  3. #3
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Réponse plus courte : "Parce que !"
    OK, je comprends ce que tu veux dire


    Citation Envoyé par E.Bzz Voir le message
    Et parseFloat() ?
    là, je comprends moins.
    C'est un test que je veux faire, pas une conversion

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Salut,
    C'est un test que je veux faire, pas une conversion
    parseFloat retourne le nombre réel à partir du premier caractère jusqu'au chiffre valide sinon il retourne NAN si le premier caractère n'est pas un chiffre.
    Donc parseFloat permet une conversion et un test à la fois.

  5. #5
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    OK, mais faut alors utiliser parseFloat avec un onchange
    parce que pendant la saisie, il devient embetant
    au cours de la saisie (onkeyup), je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function que_valeur_numerique(champ) {
      chaine=champ.value;
     
      if (chaine != '-') {
        while (isNaN(chaine)) {
          //tant qu'on n'a pas un nombre, on supprime le dernier caractere
          chaine=chaine.substr(0, chaine.length-1)
          champ.value=chaine;
        }
      }
      return chaine;
    }

Discussions similaires

  1. Afficher des mots plutot que des nombres
    Par rolan dans le forum Access
    Réponses: 2
    Dernier message: 05/01/2007, 11h37
  2. Afficher des mots plutot que des nombres
    Par rolan dans le forum Access
    Réponses: 3
    Dernier message: 04/01/2007, 22h45
  3. Somme sur des nombre décimaux
    Par chrislauxerrois dans le forum Access
    Réponses: 1
    Dernier message: 01/08/2006, 16h46
  4. Réponses: 4
    Dernier message: 20/02/2006, 00h33
  5. Select sur des nombre décimaux de format 0.*
    Par CanardJM dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/08/2005, 16h04

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