Formulaire mettre champ à 0

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Formulaire mettre champ à 0

Message par moon136 » 12 août 2017, 15:02

Bonjour,

J'ai un problème dans mon formlaire, je souhaite faire disparaitre le NaN et mettre le champ à 0 lorsque je rentre une quantité, voici mon script :

[EDIT Frosty : pour éviter d'avoir à scroller pas mal de temps pour lire la suite de la discussion, je me permets de déplacer ton code dans un "jsfiddle", qui permet également de tester le code "en direct"]
https://jsfiddle.net/kd1gsc2z/

merci de votre aide :)

Avatar du membre
Frosty
Messages : 82
Enregistré le : 20 juil. 2017, 13:23
Localisation : Grenoble

Re: Formulaire mettre champ à 0

Message par Frosty » 13 août 2017, 02:34

Le problème ici est que parseInt() returne "NaN" (= Not a Number) lorsqu'on lui fournit une chaîne vide, ou une chaîne dont le 1er caractère n'est pas un chiffre.
Voir :
http://www.toutjavascript.com/reference ... rseint.php
https://developer.mozilla.org/en-US/doc ... s/parseInt

Juste après cette ligne (vers la ligne 70 du script, dans CalculerTotal())

Code : Tout sélectionner

Valeur = parseInt(document.getElementById("nbpl1").value);
il suffit de rajouter :

Code : Tout sélectionner

if (isNaN(Valeur)) { Valeur = 0; }
et la suite du code peut fonctionner sans avoir à gérer/afficher des "NaN".

Idem pour les 2 autres groupes de champs fonctionnant sur le même principe.

Attention par contre, ce qui suit, vers la fin de CalculerTotal() ne fonctionne pas (affiche l'alerte même si tous les champs sont correctement renseignés avec des nombres), là tu testes si le champ est un nombre, alors que j'imagine que tu voudrais plutôt tester si la valeur du champ, si elle n'est pas vide, et convertie en entier avec parseInt(), est un nombre.

Code : Tout sélectionner

if((isNaN(nbpl1))||(isNaN(nbpl2))||(isNaN(npbl3))){
   alert("Veuillez entrer une quantité en chiffre");
}

moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Re: Formulaire mettre champ à 0

Message par moon136 » 13 août 2017, 19:43

Bonjour

Pas de soucis tu peux scroller dans jsfiddle ;)
Merci beaucoup pour ton aide et tes explications trés claires. j'ai essayé mais ça ne fonctionne pas quand je rentre les chiffres dans les quantités. jai mis les codes is NaN et j'ai enlevé le mien mais sans succés...bje souhaite que le champ se mette a 0 et que le NaN n'apparaisse pas du tout... c'est compliqué...

j'ai donc fait comme toi dans js fiddle :
https://jsfiddle.net/kd1gsc2z/

je galere trop à finir ce formulaire correctement sans ce soucis. Je comprends pas pourquoi ca marche pas :(

Avatar du membre
Frosty
Messages : 82
Enregistré le : 20 juil. 2017, 13:23
Localisation : Grenoble

Re: Formulaire mettre champ à 0

Message par Frosty » 13 août 2017, 22:00

Si tu fais exactement ce que je propose, c'est à dire juste après chaque ligne de la fonction calculerTotal() qui ressemble à : (il y en a 3 comme ça)

Code : Tout sélectionner

ValeurX = parseInt(document.getElementById("nbplX").value);
rajouter une ligne

Code : Tout sélectionner

if (isNaN(ValeurX)) { ValeurX = 0; }
Ca fonctionne sans afficher des "NaN" dans les champs "calculés" (explication dans mon message précédent).

Sinon merci de créer un nouveau "jsfiddle" pour me montrer ce que tu as essayé.

moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Re: Formulaire mettre champ à 0

Message par moon136 » 13 août 2017, 22:33

Mercii Frosty ça fonctionne!!!!! En fait j'avais mal placé le code , merci infiniment je desesperais.

Bonne soirée ;)

Répondre