我怎样才能正确格式货币使用jQuery?

我不需要一个面具,但我需要的东西,将格式货币(在所有的浏览器),不允许键入任何字母或特殊字符。 谢谢您的帮助

例:

有效:$ 50.00
$ 1,000.53

无效:$ w45.00
$ 34.3r6

另一种select(如果你使用ASP.Net剃刀视图),在你的看法,你可以做

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

这将正确格式化。 注意(item.total是双精度/十进制)

如果在jQuery中,你也可以使用正则expression式

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

扩大Melu的答案,你可以做到这一点function化代码和处理负数。

示例输出:
$ 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(); } 

作为jQuery FormatCurrency插件为什么是一个很好的答案的必然结果,我想反驳你的评论:

1. code.google.com/p/jquery-formatcurrency – 不会过滤掉所有的信件。 你可以input一个字母,它不会删除它。

是的,formatCurrency()本身不会过滤掉字母:

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

但是,包含在formatCurrency插件中的toNumber()会执行此操作。

您因此想要做:

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

使用jquery.inputmask 3.x。 在这里看到演示

包含文件:

 <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> 

和代码一样

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

强调:

  • 使用方便
  • 可选部件任何在面具
  • 定义隐藏复杂性的别名的可能性
  • date/date时间掩码
  • 数字掩码
  • 大量的callback
  • 非贪婪的面具
  • 许多function可以启用/禁用/configuration的选项
  • 支持readonly / disabled / dir =“rtl”属性
  • 支持数据input掩码属性
  • 多面罩支持
  • 正则expression式支持
  • dynamic掩码支持
  • 预处理掩膜支持
  • 值格式化/validation没有input元素

我曾经使用jquery格式的货币插件,但最近它已经非常错误。 我只需要格式化美元/加元,所以我写了我自己的自动格式。

 $(".currencyMask").change(function () { if (!$.isNumeric($(this).val())) $(this).val('0').trigger('change'); $(this).val(parseFloat($(this).val(), 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString()); }); 

只要将任何input的类设置为货币<input type="text" class="currencyMask" /> ,它将在任何浏览器中完美格式化。

尝试正则expression式货币与jQuery (没有插件)

 $(document).ready(function(){ $('#test').click(function() { TESTCURRENCY = $('#value').val().toString().match(/(?=[\s\d])(?:\s\.|\d+(?:[.]\d+)*)/gmi); if (TESTCURRENCY.length <= 1) { $('#valueshow').val( parseFloat(TESTCURRENCY.toString().match(/^\d+(?:\.\d{0,2})?/)) ); } else { $('#valueshow').val('Invalid a value!'); } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <input type="text" value="12345.67890" id="value"> <input type="button" id="test" value="CLICK"> <input type="text" value="" id="valueshow"> 

货币格式的jQuery插件在这里检查自动数字 – 货币格式化变得简单 。

Jus遇到了这个问题,因为我有同样的问题。 非常简单和快速实施:

http://plentz.github.io/jquery-maskmoney/