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

  1. #1
    Membre habitué
    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
    Points : 144
    Points
    144
    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
    16 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 939
    Points : 44 112
    Points
    44 112
    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 émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

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

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

  4. #4
    Membre habitué
    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
    Points : 144
    Points
    144
    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 émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    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
    16 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 939
    Points : 44 112
    Points
    44 112
    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 habitué
    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
    Points : 144
    Points
    144
    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

  8. #8
    Membre habitué
    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
    Points : 144
    Points
    144
    Par défaut
    Le programme complet est celui-ci : Avec isNaN seul il laisse passer les blancs :/

    "_ _ _ _ 12" <---------- 4 blancs en début de la saisie (les traits) sont comptés valides alors que ce que je veux c'est que cela ne soit pas détecté comme valide et affiche le message d'erreur dans la fonction affiche(message d'erreur).
    Par contre si c'est validé, cela permet le calcul et l'affichage du résultat se fait par affiche(resultat).

    Le fichier JS :
    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
     
    function CalculTTC()
    {
      var espace=false;
      si_espace(Form1.ht.value,espace); // Renvoie espace=true si HT contient un caractère espace.
     
      if (isNaN(Form1.ht.value) ) {
    	 affiche('La valeur <b>Hors Taxes</b> n\'est pas un chiffre, calcul impossible.');
    	 Form1.ht.value = "";
      }else
      {
    	// Renvoie true si TVA contient un caractère espace.
    	var espace=false;
    	si_espace(Form1.tva.value,espace); // Renvoie espace=true si TVA contient un caractère espace.
     
       if (isNaN(Form1.tva.value,espace) ) {
           console.log("test tva "+espace);
    	   affiche('La valeur de <b>la TVA</b> n\'est pas un chiffre, calcul impossible.');
    	   Form1.tva.value=="";
    	}else // Fait les calculs puisque pas d'espace dans les champs de saisie.
    	{
    	   var ht=parseFloat(Form1.ht.value);
    	   var tva= (ht/100)*parseFloat(Form1.tva.value);
    	   var ttc=ht+tva;
    	   affiche(ttc);
    	}	
      }
    }
    Le fichier 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <!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="contener">
     
    	<div id='calcul_tva'>
    		<h2>Calcul de la TVA</h2>
    		Saisissez des valeurs<p/>
    		<form name='Form1'>
    			Montant hors taxes (HT)<br/>
    			<input type='text' name='ht' /><p/>
    			Montant TVA<br/>
    			<input type='text' name='tva' /><br/>
    		</form>
    	</div>
     
    	<input type="button" value="Calculer" onclick="CalculTTC()" />
    	<div id="panneau">
    		Montant TTC<br/>
    		<div id="message"></div>
    		<div id="button"><input type="button" value="Fermer" onclick="ferme();"></div>
    	</div>
     
    </div>
    </body>
    </html>
    Le fichier index.css :
    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
    #centrage{
    position:absolute;
    width:100%;
    height:30px;
    }
     
    #panneau{
    position:relative;
    display:none;
    width:300px;
    height:100%;
    margin:auto;
    background-color:#c0c0d0;
    }
     
    #button{
    position:relative;
    width:100%;
    text-align:center;
    }

  9. #9
    Membre averti Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 329
    Points : 430
    Points
    430
    Par défaut
    Pourquoi ne pas utiliser la solution d'Eric2a ?
    Elle te supprime les espaces superflus devant et la regex vérifie que ce n'est que des chiffres avec une alerte si autre.
    Juste pour calculer un valeur TTC, je ne compliquerais pas les choses

    Citation Envoyé par Eric2a Voir le message
    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');

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

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Citation Envoyé par ddaweb
    Elle te supprime les espaces superflus
    En effet, il faut imaginer le scenario où un utilisateur colle un bout de texte dans un champ. Les espaces avant et après qu'il aurait pu copier ne devraient pas empêcher un script de fonctionner. C'est à ce dernier qu'il incombe de les supprimer s'ils ne sont pas acceptables.

    Cela dit, ne faudrait-il pas accepter les décimales ?
    Code html : 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    	<meta charset="utf-8" />
    	<title>Test</title>
    	<script type="text/javascript">
                    function affiche(s){
                            console.log(s);
                    }
     
                    function CalculTTC(){
                            var
                                    HT=Form1.ht.value.trim(),
                                    TVA=Form1.tva.value.trim(),
                                    Taxe,
                                    TTC;
     
                            if(!(/^[0-9]+(?:\.[0-9]{1,2})?$/.test(HT))){
                                    affiche('La valeur <b>Hors Taxes</b> n\'est pas un chiffre, calcul impossible.');
                                    Form1.ht.value = "";
                                    return;
                            }
                            HT=parseFloat(HT);
     
                            if(!(/^[0-9]+(?:\.[0-9]{1,2})?$/.test(TVA))){
                               affiche('La valeur de <b>la TVA</b> n\'est pas un chiffre, calcul impossible.');
                               Form1.tva.value=="";
                               return;
                            }
                            TVA=parseFloat(TVA);
                            
                            Taxe=(HT*TVA)/100;
     
                            TTC=HT+Taxe;
     
                            affiche(HT + ' + ' + Taxe + ' = ' + TTC);
                    }
            </script>
    </head>
    <body>
    	<form name="Form1">
    		<div>
    			<input type="text" name="ht" value="" placeholder="H.T." required="required" />
    			<input type="text" name="tva" value="" placeholder="T.T.C." required="required" />
     
    			<input type="button" value="Calculer" onclick="CalculTTC();return false;" />
    		</div>
    	</form>
    </body>
    </html>

    Voir l'expression rationnelle pour une meilleure compréhension.

  11. #11
    Membre habitué
    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
    Points : 144
    Points
    144
    Par défaut
    Salut
    Merci de votre aide car je suis coincé avec cette fonction :/

    Pourquoi ne pas utiliser la solution d'Eric2a ?
    Bein comme c'est du PHP il me semble alors je préfère pas mélanger les langages, je programme en javascript et je préfère utiliser des instructions javascript

    Oui effectivement j'accepte les nombres à virgule dans la formule

    J'essaie le code de Eric2a

    Les regex je trouve ça compliqué :/ il faut souffrir pour code hein^^

  12. #12
    Membre habitué
    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
    Points : 144
    Points
    144
    Par défaut
    Il manque quelque chose dans le fichier ?
    J'ai mis deux valeurs et ça n'affiche rien :/

    Nom : Sans titre.png
Affichages : 244
Taille : 63,6 Ko

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

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    La possibilité de supprimer les espace avant ET/OU après d'une chaine alphanumérique existe dans quasiment tous les langages. J'avais placé le lien pour le langage Javascript mais il est passé inaperçu.

    Je le replace ici String.prototype.trim()

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

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Citation Envoyé par progdebutant
    J'ai mis deux valeurs et ça n'affiche rien :/
    Mea culpa... En fait ça se passe dans la console Web - cf. la fonction affiche() - à modifier

  15. #15
    Membre habitué
    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
    Points : 144
    Points
    144
    Par défaut
    Super Eric merci !!!

    J'ai mis une image du fichier

  16. #16
    Membre habitué
    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
    Points : 144
    Points
    144
    Par défaut
    AAaaaaa h ça marche Eric

    Merci pour ton code c'est génial !!!
    +20 lol


    Si ça peut servir à d'autres, je mets le fichier JS corrigé, les autres restent valables (voir au-dessus) :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    // Affiche le résultat du traitement des calculs, on peut y inclure la variable global si tu veux.
    function affiche(resultat){ 
      if(document.getElementById('panneau')){
    	  document.getElementById('panneau').style.display="block";
    	  document.getElementById('message').innerHTML=resultat;
      }
    }
     
    function ferme(resultat){ 
      if(document.getElementById('panneau')){
    	  document.getElementById('panneau').style.display="none";
    	  document.getElementById('message').innerHTML="";
      }
    }
     
    function si_espace(chaine,espace){
      var taille=chaine.length;
     
      for(i=0;i<taille;i++){
    	if( chaine.indexOf(" ")!=-1 ) espace=true;
      }
      return espace;
    }
     
     /*
     Note bien la façon de faire un long commentaire comme celui-là ;)
     j'ai passé la nuit sur ce petit code à cause de mon manque de connaissance sur RegExp.
     Du coup j'en ai eu marre j'ai fait autrement.
     */
     function CalculTTC(){
     	var
    	HT=Form1.ht.value.trim(),
        TVA=Form1.tva.value.trim(),
        Taxe,
        TTC;
    	if(!(/^[0-9]+(?:\.[0-9]{1,2})?$/.test(HT))){
    		affiche('La valeur <b>Hors Taxes</b> n\'est pas un chiffre, calcul impossible.');
            Form1.ht.value = "";
            return;
        }
        HT=parseFloat(HT);
        if(!(/^[0-9]+(?:\.[0-9]{1,2})?$/.test(TVA))){
    		affiche('La valeur de <b>la TVA</b> n\'est pas un chiffre, calcul impossible.');
            Form1.tva.value=="";
            return;
        }
        TVA=parseFloat(TVA);
        Taxe=(HT*TVA)/100;
        TTC=HT+Taxe;
        affiche(HT + ' + ' + Taxe + ' = ' + TTC);
    }
     
     
    function fois2(valeur){
       var total = valeur * 2;
       return total;
    }
     
    function traite(){
       if (isNaN(Form1.chiffre.value) ){
    		var chiffre=parseFloat(form1.chiffre.value);
       }	
    	var resultat="Le double de "+ chiffre + " est "+ fois2(chiffre);
    	affiche(résultat);
    }

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

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    +1 également pour... eric2a.html

  18. #18
    Membre habitué
    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
    Points : 144
    Points
    144
    Par défaut
    lol

    Thanks

  19. #19
    Membre averti Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 329
    Points : 430
    Points
    430
    Par défaut
    Une petite question : pourquoi contrôler les espaces avant les chiffres en JS ?
    J'ai une page similaire en php, avec en plus un coefficient pour prix de vente et arrondi à 2 décimales, les espaces ne me posent aucun soucis, ni avant, ni après.

    Je viens de regarder mon vieux code ... pffff je fais mieux maintenant

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

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Oui et NoSmoking a bien démontré avec la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log(isNaN(' 123 '))    // false
    que les espaces n'empêchent pas les nombres d'être considérés comme tels.

    Mais au départ, progdebutant ne voulait pas éxecuter la fonction si la saisie contenait au moins un espace. D'où le discours sur la methode trim() et un clin d'oeil aux expressions rationnelles qui permettent de résoudre des problèmes en une pierre deux coups (et d'avantages).

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/12/2010, 17h03
  2. Afficher des pixels pour dessiner une fonction
    Par Sandro Munda dans le forum Linux
    Réponses: 7
    Dernier message: 13/05/2007, 12h58
  3. Réponses: 4
    Dernier message: 09/08/2006, 11h41
  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, 12h55
  5. Réponses: 4
    Dernier message: 05/05/2006, 18h17

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