Format monétaire avec espace, décimales SANS signe de $ et sans afficher 0.00  (Lu 348 fois) Partager ce sujet Imprimer

1 B


Sky  12 juillet 2018 : 19:29

Bonjour j'ai des champs texte dont le signe de dollars est déjà présent sur le formulaire (donc pas besoin de s'afficher dans mon champs).
Je cherche un script qui s'affiche avec des espaces entre les centaines et les dizaines avec la virgule et sans le signe de dollars à la fin.
Par exemple comme ceci :
[size=78%]1 234 567,12[/size]
De plus, lorsque l'utilisateur n'a pas encore rempli le formulaire. Le champs ne doit rien afficher. Je ne veux pas voir de 0,00, comme ça si on doit imprimer avant d'avoir rempli à l'écran on peut le faire.


Quelqu'un peut m'aider ?


Merci d'avance  :soleil:

IP archivée


bebarth  13 juillet 2018 : 07:33

bonjour,
Est-ce le résultat d'un calcul ou le nombre est-il rentré manuellement ?
@+
 :bonjour:

IP archivée


Merlin  13 juillet 2018 : 10:38

Bonjour.

Place ce script en "script de format personnalisé" :

event.value = util.printf("%,2.2f",event.value).toString().replace(/\./gim," ");
if (event.value == "0,00") {event.value = ""};

Attention, si le champ qui utilise ce script est utilisé pour d'autres calculs qui en découlent il faudra supprimer la deuxième ligne (qui supprime le zéro) sinon ça provoquerait des erreurs NaN (Not a Number).

IP archivée


Sky  13 juillet 2018 : 14:21

@bebarth : Non mon champs n'est pas un calcul, il est un nombre rentré manuellement.
@Merlin : C'est parfait ! Est-ce possible d'avoir le même javascript mais qu'il fonctionne autant si l'utilisateur inscrit le (point) ou la (virgule) pour tapper le nombre. Actuellement ce code fonctionne seulement si l'utilisateur utilise le (point) mais j'aimerais être certaine que les deux possibilités soit possible dans le meilleur des mondes :)

PS: si vous avez ce code en version inversée aussi pour l'anglais par exemple! Pour avoir un résultat similaire mais inversé :P Résultat : nombre avec un point peut importe si l'utilisateur tape une (virgule) ou un (point)

Merci beaucoup! C'est super apprécié.

IP archivée


Merlin  13 juillet 2018 : 14:41

Pour obtenir le point à la place de la virgule il faut remplacer :


event.value = util.printf("%,2.2f",event.value).toString().replace(/\,/gim," ");

par

event.value = util.printf("%,0.2f",event.value).toString().replace(/\,/gim," ");

Pour le reste je ne sais pas, je te renvoie à la doc…  :joker:


IP archivée


Sky  13 juillet 2018 : 16:58

Merci :D !! Cool ce petit imprime-écran ! Je ne sais pas comment créer de Javascript mais cela va m'être utile de comprendre ces quelques données ! Merci beaucoup.

IP archivée


bebarth  13 juillet 2018 : 20:03

@Merlin : C'est parfait...
Je suis un peu étonné, car pour moi :
event.value = util.printf("%,2.2f",event.value).toString().replace(/\,/gim," ");devrait donner : 1.234 56 puisqu'on remplace chaque virgule par un espace... il faudrait plutôt écrire :event.value = util.printf("%,2.2f",event.value).toString().replace(/\./g," ");...de plus, g devrait suffire pour global quand on remplace un signe !
Et dans l'autre exemple il faut remplacer les virgules par un espace .replace(/\,/gim," ") et le point par une virgule .replace("\.","\,") (il devrait n'y en avoir qu'un).
@+
 :bonjour:

IP archivée


Sky  17 juillet 2018 : 17:24

Bonjour les gars :)

Le javascript de Merlin fonctionne très bien pour moi pour la règle typographique en français : 1 234 567,89 et ne pas afficher 0,00 quand rien n'est inscrit dans la case.

event.value = util.printf("%,2.2f",event.value).toString().replace(/\./gim," ");
if (event.value == "0,00") {event.value = ""};

par contre pour la règle typographique en anglais, aucun des codes ne fonctionne .. j'ai tenté plusieurs options mais sans résultats : 
Il me faut un javascript pour ceci : 1 234 567.89 et ne pas afficher 0.00 par défaut..

Quelqu'un pourrait m'aider à obtenir se format SVP. ? 

IP archivée


Merlin  17 juillet 2018 : 18:31

Il me faut un javascript pour ceci : 1 234 567.89 et ne pas afficher 0.00 par défaut.
Il faut remplacer la virgule par un point dans la 2e ligne :

if (event.value == "0.00") {event.value = ""};


Ça devrait aussi fonctionner avec :

if (event.value == "0") {event.value = ""};

IP archivée


Sky  17 juillet 2018 : 18:40

Bonjour Merlin, la première partie non plus ne fonctionne pas pour le format 1 234 567.89
je suis un peu désespérée !

IP archivée


bebarth  17 juillet 2018 : 19:08

bonjour,
Il me faut un javascript pour ceci : 1 234 567.89 et ne pas afficher 0.00 par défaut..
J'avais cru comprendre que l'utilisateur tape un point (12345.78) ou une virgule (12345,78), le résultat devait être 12 345,78
C'est pas cela ???
@+
 :bonjour:

IP archivée


Sky  17 juillet 2018 : 19:46

C'est exacte bebarth,

il me faut maintenant l'inverse hihi :  que l'utilisateur tape un point (12345.78) ou une virgule (12345,78), le résultat soit 12 345.78

J'ai tout essayé, mais je ne suis pas tombé sur ce résultat...

IP archivée


bebarth  17 juillet 2018 : 21:02

Voilà !
Rien à voir avec le script de Merlin. C'est un champ texte avec un script de touches personnalisé pour n'admettre que les chiffres, le point et la virgule et un script en champ désactivé pour faire le job!
Tu as les 2 versions avec au final le point ou avec la virgule.
J'ai mis un espace fin au lieu d'un espace pour séparer les milliers.
Tu me dis si j'ai oublié quelque chose.
@+
 :bonjour:

IP archivée


Sky  17 juillet 2018 : 21:38

bebarth tu es mon sauveur !!

Il manque un seul détail et on y est.. j'ai essayer de recopier ce javascript : if (event.value == "0,00") {event.value = ""};
il ne fonctionne plus avec ton javascript.  Est-ce possible de faire en sorte que le champs reste vide et n'affiche pas : .00 ou ,00 par défaut lorsqu'il n'est pas rempli ?
Je sais, je sais ! Je suis exigeante hihi!

IP archivée


bebarth  18 juillet 2018 : 08:19

bonjour,

Je sais, je sais ! Je suis exigeante hihi!

Tu es une femme, non ???
Voilà, je pense que ce coup-ci tout y est !!!
@+
 :bonjour:

...et donc, en plein dans le mille !
 :geek:

IP archivée


Sky  18 juillet 2018 : 14:27

C'est de la magie ! Plus que parfait !  :bravo: :bonjour: Merci bebarth!  :soleil:

IP archivée


Merlin  20 juillet 2018 : 13:35

 :bravo:

IP archivée


Lulularsu  29 juillet 2018 : 21:06

Bonsoir,

Sur un formulaire d'inscription, je voudrais également que les champs à 0,00€, ne s'affichent pas. Mais à la différence de Sky, mes champs comportent des formules du type car ils vont récupérer un montant dans un autre champ :


if (this.getField("TarifGlace").value!="Off") {
this.event.target.value=this.getField("TarifGlace").value;
} else {
this.event.target.value="0";
}


J'ai essayé d'inclure le script :

event.value = util.printf("%,2.2f",event.value).toString().replace(/\./gim," ");
if (event.value == "0,00") {event.value = ""};

mais cela ne fonctionne pas même en supprimant la 2e ligne.

Quelqu'un pourrait-il m'aider ?
Merci par avance

IP archivée


Merlin  30 juillet 2018 : 09:16

Bonjour.


S'il y a d'autres calculs dépendants il ne faut pas supprimer la valeur zéro, il faut la masquer.
Par exemple en lui donnant la même couleur que le fond (blanc) de la page.

À placer en script de validation ou bien en script de format personnalisé :

if (event.value == 0) {
    event.target.textColor = color.white ;
}
else {
    event.target.textColor = color.black ;
}

IP archivée


bebarth  30 juillet 2018 : 14:24

bonjour,
Je t'ai envoyé une proposition en MP sur le fichier que tu m'as fourni.
@+
 :bonjour:

IP archivée