使用jQuery格式化货币

3

我写了一个小段代码来格式化货币,但是它在小数点处出了问题。每次都会添加它们...你有什么想法,有更好的方法吗?

$(".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");
    }
});

2
如果字符串未被找到,indexOf 将返回 -1 - gen_Eric
你正在检查 . 的索引是否不为 0,也就是在值的左侧。这只会匹配像 .50 这样的内容,我猜你实际上只是想检查是否存在 .,那么只需要检查 indexOf('.') != -1 即可。 - idbentley
3个回答

5

我写了一个不同的美元格式化代码片段,它可以将任何数字(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);
    }
});

在此处查看它的操作演示。


3
你可以查看微软提供的jQuery全球化插件。 链接

2

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

if ($(this).val().indexOf("$") < 0) {
    $(this).val("$" + $(this).val());
} 
if ($(this).val().indexOf(".") < 0){
    $(this).val($(this).val() + ".00");
< p > 编辑 噢——我搞反了:-)小于零,而不是大于等于。后者是您用来查找字符是否在字符串中的方法,但您的代码需要知道它在字符串中。


2
@Tamer:在搜索$时,你成功地逃脱了因为$可能是数组中的第一个字符,即位置0。小数点可以出现在许多位置,包括0或更大的位置。 - Surreal Dreams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接