我不需要面罩,但我需要一些可以在所有浏览器中格式化货币的东西,并且不允许输入任何字母或特殊字符。谢谢帮助。
示例:
有效:$50.00 $1,000.53
无效:$w45.00 $34.3r6
示例:
有效:$50.00 $1,000.53
无效:$w45.00 $34.3r6
如果你正在使用ASP.Net razor视图,另一个选项是在你的视图上执行以下操作:
<div>@String.Format("{0:C}", Model.total)</div>
这将正确格式化它。请注意(item.total是double/decimal)
如果在jQuery中,您也可以使用正则表达式
$(".totalSum").text('$' + parseFloat(total, 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString());
@String.Format
。我猜测这可能与由 ASP.NET 生成的服务器端 HTML 有关。原始问题提到了吗? - NateJQUERY FORMATCURRENCY PLUGIN是一个jQuery插件,可以用于格式化货币金额。你可以在这里找到它。
在Melu的回答基础上,您可以将此代码封装成一个函数并处理负金额。
示例输出:
$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();
}
// 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'
}
);
亮点:
$('.price-format').inputmaks()
或者
$('.price-format').each(function() { $(this).inputmask() })
- remkovdm$('.price-format').inputmask('decimal', { ... });
应该 可以工作。 - drew010我曾经使用过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 type="text" class="currencyMask" />
,它将在任何浏览器中完美格式化。
$(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">
编辑:新增检查值是否有效/无效
JavaScript已经具备此功能。
var cur = function (amt) {
return Intl.NumberFormat('en-US', { style: "currency", currency: "USD" }).format(amt);
};
C#
@{
CultureInfo newCulture = CultureInfo.CreateSpecificCulture(Model.culture);
var ri = new RegionInfo(@newCulture.LCID);
}
jQuery
$(document).find("#labGrandTotal").text(Intl.NumberFormat('@Model.culture', { style: 'currency', currency: '@ri.ISOCurrencySymbol'}).format(num));
其中Model.culture的示例为"en-GB"