我已经检查了所有相关问题,没有完全解决我的问题。我知道如何使用符号和逗号转换为金钱,但不确定如果用户未指定Cents,如何添加尾随零。
我确实遇到了一篇提到添加此.tofix的帖子(2(,但我不明白如何将其纳入我的功能。
所需功能为14578,可转换为$ 14,578.00,但如果数字为14578.79至$ 14,578.79,请不要添加零。我还注意到,即使留空,它也会在现场投入一美元的标志。有什么方法可以避免这种情况?
$('.money').blur(function(e){
$(this).val(formatCurrency(this.value.replace(/[,$]/g,'')));
}).on('keypress',function(e){
if(!$.isNumeric(String.fromCharCode(e.which))) e.preventDefault();
}).on('paste', function(e){
var cb = e.originalEvent.clipboardData || window.clipboardData;
if(!$.isNumeric(cb.getData('text'))) e.preventDefault();
});
function formatCurrency(number){
var n = number.split('').reverse().join("");
var n2 = n.replace(/ddd(?!$)/g, "$&,");
return '$' + n2.split('').reverse().join('');
}
input {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' class="money"/>
<input type='text'/>
<input type='text' class="money"/>
<input type='text'/>
<input type='text' class="money"/>
<input type='text'/>
<input type='text' class="money"/>
<input type='text'/>
谢谢!
要防止插入空插入空" $",您需要检查数字是否为空并返回该功能。这是您的解决方案。您还需要允许"。在您的keypress
中允许用户添加美分。
$('.money').blur(function(e){
if($(this).val() == "") return;
$(this).val(formatCurrency(this.value.replace(/[,$]/g,'')));
}).on('keypress',function(e){
if(String.fromCharCode(e.which) != "." && !$.isNumeric(String.fromCharCode(e.which))) e.preventDefault();
}).on('paste', function(e){
var cb = e.originalEvent.clipboardData || window.clipboardData;
if(!$.isNumeric(cb.getData('text'))) e.preventDefault();
});
function formatCurrency(number){
if(number == "") return;
number = parseFloat(number).toFixed(2);
var n = number.split('').reverse().join("");
console.log(n);
var n2 = n.replace(/ddd(?!$)/g, "$&,");
return '$' + n2.split('').reverse().join('');
}
在这里检查JSFIDDLE:https://jsfiddle.net/7scapsk9/
parseFloat(value).toFixed(n)
其中值是您的号码(可以是字符串(,而n是显示
用此替换当前的formatCurrency
函数:
function formatCurrency(number) {
return (number != null && number != "") ? "$".concat(parseFloat(number).toFixed(2).toString()
.split('').reverse().join("")
.replace(/ddd(?!$)/g, "$&,")
.split('').reverse().join("")) : number;
}
如果传递的数字(或数字的字符串(不是null,未定义或空字符串,则将数字解析为有效货币。