开发者问题收集

使用 jquery 格式化金钱

2011-03-08
2349

我写了这段代码来格式化货币,但由于某种原因,它在句号上失败了。每次它都会不断添加它们……知道为什么吗?有没有更好的方法?

$(".dollar").blur(function() {
    var curval = $(this).val(); 
    if ($(this).val().indexOf("$") != 0) {
        $(this).val("$" + $(this).val());
    } 
    if ($(this).val().indexOf(".") != 0){
        $(this).val($(this).val() + ".00");
    }
});
3个回答

我编写了一个不同的美元格式化代码片段,它可以接受任意数字(1、1.6、2.52、8.2472)并自动将其格式化为美元符号($1.00、$1.60、$2.52、$8.24):

$('.dollars').blur(function(e){
    var curVal = parseFloat($(this).val()),
        curInt = parseInt(curVal, 10),
        curDec = parseInt(curVal*100, 10) - parseInt(curInt*100, 10);

    curDec = (curDec < 10) ? "0" + curDec : curDec;

    if (!isNaN(curInt) && !isNaN(curDec)) {
        $(this).val("$"+curInt+"."+curDec);
    }
});

在此处查看实际操作。

mVChr
2011-03-08

您可以查看 jquery 全球化插件

Darin Dimitrov
2011-03-08

“indexOf”函数返回字符串中的索引。我认为您应该测试结果是否小于零。

if ($(this).val().indexOf("$") < 0) {
    $(this).val("$" + $(this).val());
} 
if ($(this).val().indexOf(".") < 0){
    $(this).val($(this).val() + ".00");

edit 哎呀 — 我搞反了 :-) 小于零,而不是大于或等于。后者是您用来查明字符是否 字符串中的方法,但您的代码需要知道它何时 不在 字符串中。

Pointy
2011-03-08