Jquery在数字

时间:2016-04-04 13:10:01

标签: javascript jquery

我有包含数字的文本框,每当我添加数字时,它会格式化我的数字,添加逗号" onblur"工作正常的事件。但当我添加一个数字时,它已经格式化的数字,逗号不在正确的位置,有时加零。如果我添加1000000其格式1,000,000但如果我添加或编辑1,000,0002其最终结果是1,000,0,002。

JQUERY

function addCommas(nStr)
{
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

$("#mytextbox").blur(function(){
        this.value = addCommas(this.value.replace(',', ''));
    });

2 个答案:

答案 0 :(得分:2)

replace(',', '')仅将第一个逗号替换为空。您需要全局逗号替换。尝试更改此行

this.value = addCommas(this.value.replace(',', ''));

对此:

this.value = addCommas(this.value.replace(/,/g, ''));

答案 1 :(得分:0)

我建议使用toLocaleString()。您可以将整个addCommas函数转换为一行:

parseInt(nStr.replace(/\D/g, '')).toLocaleString();

让我分解一下这里发生的事情。首先,我们将nStr中的所有非数字字符替换为''。这比仅删除逗号更彻底。接下来,我们使用parseInt()将数字串转换为数字。这将允许我们在Number原型中使用一些内置的格式化方法。最后,Number原型有一个函数toLocaleString(),它返回一个字符串,其中包含数字的语言敏感表示。默认值为美国英语,但如果需要,您可以选择指定其他语言环境。