79 votes

Comment puis-je formater correctement la devise en utilisant jquery?

Je n'ai pas besoin de masque, mais j'ai besoin de quelque chose qui formate la monnaie (dans tous les navigateurs) et ne permette pas la saisie de lettres ou de caractères spéciaux. Merci pour l'aide

Exemple:

Valide: 50,00 $
1 000,53 $

Non valide: 45,00 USD
$ 34.3r6

101voto

Melu Points 303

Une autre option est, à votre avis, vous pouvez faire

 <div>@String.Format("{0:C}", Model.total)</div>
 

Cela le formaterait correctement. note (le total est double / décimal)

si jQuery vous pouvez aussi utiliser Regex

 $(".totalSum").text('$' + parseFloat(total, 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString());
 

50voto

Robert Harvey Points 103562

39voto

Chad Kuehn Points 240

En développant la réponse de Melu, vous pouvez le faire pour fonctionnaliser le code et gérer les montants négatifs.

Exemple de sortie:
5,23 $
- 5,23 $

 function formatCurrency(total) {
    var neg = false;
    if(total < 0) {
        neg = true;
        total = Math.abs(total);
    }
    return (neg ? "-$" : '$') + parseFloat(total, 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString();
}
 

20voto

Neptune Systems Points 186

En corollaire, le plugin jQuery FormatCurrency est une bonne réponse, je voudrais réfuter votre commentaire:

1. code.google.com/p/jquery-formatcurrency - Ne filtre pas toutes les lettres. Vous pouvez taper une seule lettre sans la supprimer.

Oui, formatCurrency () en soi ne filtre pas les lettres:

 // only formats currency
$(selector).formatCurrency();
 

Mais toNumber (), inclus dans le plugin formatCurrency, le fait.

Vous voulez donc faire:

 // removes invalid characters, then formats currency
$(selector).toNumber().formatCurrency();
 

16voto

Fernando Kosh Points 729

Utilisation de jquery.masquesaisie (inputmask) 3.x. Voir les démos ici

Inclure des fichiers:

<script src="/assets/jquery.inputmask.js" type="text/javascript"></script>
<script src="/assets/jquery.inputmask.extensions.js" type="text/javascript"></script>
<script src="/assets/jquery.inputmask.numeric.extensions.js" type="text/javascript"></script>

Et le code que

$(selector).inputmask('decimal',
  { 'alias': 'numeric',
    'groupSeparator': '.',
    'autoGroup': true,
    'digits': 2,
    'radixPoint': ",",
    'digitsOptional': false,
    'allowMinus': false,
    'prefix': '$ ',
    'placeholder': '0'
  }
);

Faits saillants:

  • facile à utiliser
  • pièces en option anywere dans le masque
  • possibilité de définir des alias qui cachent la complexité
  • date / datetime masques
  • masques numériques
  • beaucoup de rappels
  • non-greedy masques
  • de nombreuses fonctions peuvent être activées/désactivées/configuré dans les options
  • prend en charge readonly/désactivé/dir="rtl" attributs
  • support de données masquesaisie (inputmask) attribut(s)
  • multi-masque de soutien
  • regex masque de soutien
  • dynamique-masque de soutien
  • prétraitement-masque de soutien
  • la valeur de mise en forme et validation sans élément d'entrée

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X