在输入框中为数字添加空格分隔符

时间:2014-12-14 00:34:31

标签: javascript jquery html

我试图让输入框显示带空格分隔符的数字。像这样: 20 000和200 000 000而不是20000和200 000

问题是我希望在你输入时发生这种情况。因此,当您在输入元素中键入数字时,我希望动态添加此间距。

有没有人有这方面的好解决方案?

我使用此功能在静态输出上执行此操作,但是当从文本框中获取值,通过该函数运行然后将其放回原因时,它无法正常工作。

function delimitNumber(number) {
    var delimiter = " "; 

    number = new String(number);
    var parts = number.split('.', 2);
    var decimal = parts[1];
    var i = parseInt(parts[0]);

    if(isNaN(i)) 
        return ''; 

    var minus = '';

    if (i < 0) 
        minus = '-'; 

    i = Math.abs(i);
    var n = new String(i);
    var a = [];

    while(n.length > 3) {
        var nn = n.substr(n.length-3);
        a.unshift(nn);
        n = n.substr(0,n.length-3);
    }

    if (n.length > 0) 
        a.unshift(n); 

    n = a.join(delimiter);

    if (typeof decimal === 'undefined' || decimal.length < 1)  
        number = n;
    else 
     number = n + '.' + decimal;

    number = minus + number; // Assemble the number with negative sign (empty if positive)
    return number;
}

2 个答案:

答案 0 :(得分:3)

<input type="text" id="number" />

JS:

$('#number').on("keyup", function() {
    this.value = this.value.replace(/ /g,"");
    this.value = this.value.replace(/\B(?=(\d{3})+(?!\d))/g, " ");
});

http://jsfiddle.net/LLcsxr6c/

我使用 keyup 事件,因为 keypress keydown 将在输入框实际更新之前触发。

使用jQuery 2,您可以使用$('#number').on("input", function()

答案 1 :(得分:0)

创建一个将为您执行字符串操作的函数。接下来,在输入框上设置一个侦听器以侦听键。该按键事件应触发您的函数,传递输入框的值,然后将值设置为新分隔的字符串。