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 :

Une fonction affiche() qui doit se lancer seulement si une des 3 conditions d'une chaine est vraie.


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    rien
    Inscrit en
    Décembre 2015
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 282
    Par défaut Une fonction affiche() qui doit se lancer seulement si une des 3 conditions d'une chaine est vraie.
    Bonjour, j'ai un problème avec cette fonction : Je cherche à lancer la fonction affiche() seulement si le champ de saisie form1.ht.value contient une valeur non numérique, du vide (pas de caractères), ou un caractère espace ou plus d'un.

    Pour tester j'ai ecris deux chiffres séparés par un espace, et l'espace est bien détecté par si_espace() mais elle semble ne pas le renvoyer à la fonction function CalculTTC()
    C'est bizarre...

    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
     
    function si_espace(chaine,espace){
      var taille=chaine.length;
      for(i=0;i<taille;i++){
    	if( chaine.indexOf(" ")!=-1 ) espace=true;
      }
     /* ici un caractère espace est reconnu sil est dans la chaine mais il n'est pas envoyé à la fonction qui a appelé */
      return espace; // si un caractère espace est trouvé dans la chaine : espace vaudra true sinon false.
    }
     
    function CalculTTC()
    {
    var espace=false;
    si_espace(Form1.ht.value,espace); // Renvoie espace=true si HT contient un caractère espace.
    console.log("test ht "+espace); // Là le caractère espace n'est pas reconnu puisque il vaut false à cet endroit alors qu'il devrait être à true.
    if (isNaN(Form1.ht.value)||(Form1.ht.value=="")||(espace) ) {
       affiche('La valeur <b>Hors Taxes</b> n\'est pas un chiffre, calcul impossible.');
       Form1.ht.value = "";
    }

    Ma partie HTML :
    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
     
    <!DOCTYPE html>
    <html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    	<title>Accueil</title>
    	<link rel="stylesheet" href="index.css" />
    	<script type="text/javascript" src="index.js"></script>
    </head>
     
    <body>
     
    <div id="calcul">
       <form name='Form1'>
    	 Montant hors taxes (HT)<br/>
    	<input type='text' name='ht' /><p/>
       </form>
       <input type="button" value="Calculer" onclick="CalculTTC()" />
    </div>
     
    </body>
    </html>







    J'ai passé la nuit dessus et j'ai pas encore trouvé :/
    J'ai essayé les RegExp mais trop dur à comprendre pour le moment pour moi on dirait.

    Quelqu'un saurait tester les 3 conditions pour lancer la fonction affiche() ?

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    lancer la fonction affiche() seulement si le champ de saisie form1.ht.value contient une valeur non numérique, du vide (pas de caractères), ou un caractère espace ou plus d'un.
    si j'ai bien compris cela signifie simplement que tu veux afficher un texte d'avertissement uniquement si la valeur n'est pas un numérique, dans ce cas il suffit simplement de faire un test avec isNaN.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var valeur = Form1['ht'].value
    alert( isNaN( valeur));

  3. #3
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Je me permet d'ajouter que, concernant les espaces, il existe la méthode trim().

  4. #4
    Membre très actif
    Homme Profil pro
    rien
    Inscrit en
    Décembre 2015
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 282
    Par défaut
    si j'ai bien compris cela signifie simplement que tu veux afficher un texte d'avertissement uniquement si la valeur n'est pas un numérique,
    Non ce n'est pas du tout ça :/
    Je dis bien qu'il y a UNE des trois conditions (il y a des "ou" dans ma phrase), donc il faut tester les trois.

    si j'ai bien compris cela signifie simplement que tu veux afficher un texte d'avertissement uniquement si la valeur n'est pas un numérique, dans ce cas il suffit simplement de faire un test avec isNaN.
    Je ne sais pas si tu as regardé mon code, je crois que non
    J'utilise déjà isNaN...


    Salut,

    Je me permet d'ajouter que, concernant les espaces, il existe la méthode trim().
    Trim c'est en PHP :/

    Une vraie solution à me proposer s'il vous plaît ?

  5. #5
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Tu es énervé (par manque de sommeil ?) je peux le comprendre. Mais tu ne nous manque pas de respect (*) pour autant.

    Ci-dessous les expressions rationnelles sont utilisées pour tester qu'une chaine ne contient uniquement que des chiffres (ainsi que la méthode JS trim que tu n'es pas obligé d'utiliser mais qui existe bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var s='   123456  '.trim();	// Retourne '123456'
     
    if(/^[0-9]+$/.test(s))
    	console.log('Ok... On a bien un nombre = '+s);
    else
    	console.log('Ko... Au moins un caractère n\'est pas un nombre');
    (*) Je ne suis pas le premier à te le faire remarquer!

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Une vraie solution à me proposer s'il vous plaît ?
    Comme tu es trop mignon !

    Je ne sais pas si tu as regardé mon code, je crois que non
    surement plus que ce que tu as testé le code et les liens fournis, celui fourni par Eric2a répond à ta question
    Trim c'est en PHP :/
    Regarde bien ce que fait ton code isNaN(Form1.ht.value)||(Form1.ht.value=="")||(espace) et testes VRAIMENT isNaN tout court, à l'exception que "" vaut zéro prend le temps de tester par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    console.log(isNaN(''))         // false car vaut zéro
    console.log(isNaN('123'))      // false
    console.log(isNaN(' 123 '))    // false
    console.log(isNaN('123 12'))   // true
    console.log(isNaN('123[1]'))   // true
    console.log(isNaN('123abc'))   // true

  7. #7
    Membre très actif
    Homme Profil pro
    rien
    Inscrit en
    Décembre 2015
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 282
    Par défaut
    Merci pour votre aide !
    Tu es énervé (par manque de sommeil ?) je peux le comprendre. Mais tu ne nous manque pas de respect (*) pour autant.
    Où vois-tu que je suis énervé ? C'est vraiment bizarre comme réaction de susceptibilité.

    Je suis désolé si vous l'avez perçu comme ça, c'était pas mon but, mais pourquoi je vous manquerais de respect alors que vous souhaitez m'aider, c'est pas logique. C'est juste que je voyais mal isNaN reussir tout seul à faire trois tests différents alors que je l'utilisais déjà dans mon code et que je l'avais déjà testé seul d'ailleurs.

    Regarde bien ce que fait ton code isNaN(Form1.ht.value)||(Form1.ht.value=="")||(espace) et testes VRAIMENT isNaN tout court, à l'exception que "" vaut zéro prend le temps de tester par exemple
    Le code fourni par Eric2a remplace à lui seul les trois tests que je cherche ? D'après ce que j'en sais c'est du php non ? Je me trompe ? J'ai pas trouvé de trim en javascript.

    Concernant le isNaN je le teste seul pour voir

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/12/2010, 16h03
  2. Afficher des pixels pour dessiner une fonction
    Par Sandro Munda dans le forum Linux
    Réponses: 7
    Dernier message: 13/05/2007, 11h58
  3. Réponses: 4
    Dernier message: 09/08/2006, 10h41
  4. Une fonction settimeout qui s'execute pas
    Par stepon dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/08/2006, 11h55
  5. Réponses: 4
    Dernier message: 05/05/2006, 17h17

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