我有包含数字的文本框,每当我添加数字时,它会格式化我的数字,添加逗号" 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(',', ''));
});
答案 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(),它返回一个字符串,其中包含数字的语言敏感表示。默认值为美国英语,但如果需要,您可以选择指定其他语言环境。