我怎样才能正确格式货币使用jQuery?
我不需要一个面具,但我需要的东西,将格式货币(在所有的浏览器),不允许键入任何字母或特殊字符。 谢谢您的帮助
例:
有效:$ 50.00
$ 1,000.53
无效:$ w45.00
$ 34.3r6
JQUERY FORMATCURRENCY插件
http://code.google.com/p/jquery-formatcurrency/
另一种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遇到了这个问题,因为我有同样的问题。 非常简单和快速实施: