仅使用Javascript格式化数字为千

时间:2016-01-19 04:13:06

标签: javascript jquery

Console.log显示正确的结果,但如何在输入时为输入类型添加相同的格式。

输入类型在每个逗号后重置为零。

1000到1,000

请帮助。

此代码正常运作here



function numberWithCommas(number) {
    if (isNaN(number)) {
        return '';
    }

    var asString = '' + Math.abs(number),
        numberOfUpToThreeCharSubstrings = Math.ceil(asString.length / 3),
        startingLength = asString.length % 3,
        substrings = [],
        isNegative = (number < 0),
        formattedNumber,
        i;

    if (startingLength > 0) {
        substrings.push(asString.substring(0, startingLength));
    }

    for (i=startingLength; i < asString.length; i += 3) {
        substrings.push(asString.substr(i, 3));
    }

    formattedNumber = substrings.join(',');

    if (isNegative) {
        formattedNumber = '-' + formattedNumber;
    }

    document.getElementById('test').value = formattedNumber;
}
&#13;
<input type="number" id="test" class="test" onkeypress="numberWithCommas(this.value)">
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:0)

在这里查看我的小提琴http://jsfiddle.net/6cqn3uLf/ 你需要另一个正则表达式来限制数字,但这将根据用户的语言环境进行格式化 - 这在这里可能是有利的。

for line in f:
    line = line.strip()
    if len(line) > 0:
       l.append([int(a) for a in line.split()])
print(l)
$(function () {
    $('#btnformat').on('input propertychange paste', function () {
        var x = $('#btnformat').val();
 $('#btnformat').val(Number(x.replace(/,/g,'')).toLocaleString());
    });
});

答案 1 :(得分:0)

function numberWithCommas(x) {
    var real_num =  x.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
    console.log(real_num);
    document.getElementById('test').value = real_num;
}

<input type="number" id="test" onkeypress="numberWithCommas(this.value)">

答案 2 :(得分:0)

一些注意事项:

  • 因为你想要逗号,所以类型不是数字,而是字符串
  • 因为您想在输入后处理输入,所以onkeyup不是onkeypressed

我有一个解决方案,用3个字符替换3个字符的正则表达式加上逗号:

var x = "1234567";
x.replace(/.../g, function(e) { return e + ","; } );
// Gives: 123,456,7

即。几乎是正确的答案,但逗号不在正确的位置。所以让我们用String.prototype.reverse()函数修复它:

String.prototype.reverse = function() {
    return this.split("").reverse().join("");
}

function reformatText() {
    var x = document.getElementById('test').value;
    x = x.replace(/,/g, ""); // Strip out all commas
    x = x.reverse();
    x = x.replace(/.../g, function(e) { return e + ","; } ); // Insert new commas
    x = x.reverse();
    x = x.replace(/^,/, ""); // Remove leading comma
    document.getElementById('test').value = x;
}
<input id="test" class="test" onkeyup="reformatText()">

答案 3 :(得分:0)

如果jquery不是您的应用程序的开销,那么您可以使用 https://code.google.com/p/jquery-numberformatter/