如何使用 JQuery 为货币添加小数点和尾随零?

How can I use JQuery to add a decimal and trailing zeros to currency?

我已经检查了所有相关问题并且none,完全解决了我的问题。我知道如何使用符号和逗号转换为金钱,但不确定如果用户未指定美分如何添加尾随零。

我确实遇到了 post 提到添加这个 .toFixed(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(/\d\d\d(?!$)/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'/>

谢谢!

parseFloat(value).toFixed(n)

其中 value 是您的数字(可以是字符串),n 是要显示的小数位数

为防止插入空的“$”,您需要检查数字是否为空以及 return 函数。这是适合您的解决方案。您还需要允许“。”在您的 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(/\d\d\d(?!$)/g, "$&,");    
    return '$' + n2.split('').reverse().join('');
}

在此处检查 jsFiddle:https://jsfiddle.net/7scapsk9/

将您当前的 formatCurrency 函数替换为以下函数:

function formatCurrency(number) {
    return (number != null && number != "") ? "$".concat(parseFloat(number).toFixed(2).toString()
        .split('').reverse().join("")
            .replace(/\d\d\d(?!$)/g, "$&,")
                .split('').reverse().join("")) : number;
}

如果传入的数字(或数字字符串)不为 null、未定义或空字符串,它将将该数字解析为有效货币。