分开的数字三到三?

时间:2011-08-10 12:59:59

标签: javascript jquery

如何在输入中键入数字:文本,将它们分成三到三个,并在它们之间放置:“,”? 正常数字格式

示例:在输入中键入此数字:45656839
结果(直播 - 在线)在同一输入中:45,656,839
我不想使用插件。

尊重

4 个答案:

答案 0 :(得分:3)

Demo

这应该为你做。

<input type="text" class="numeric" />


$("input:text.numeric").keyup(function(){
    $val = $(this).val();
    $(this).val($val.match(/[0-9]{1,3}/g).join(","))
});

修改

对于正常的数字格式,代码有点不同。可能有一些很好的正则表达式,但我的第一个想法是扭转字符串并应用相同的技术。然后你再次反转字符串,你有它

$("input:text.numeric").keyup(function(){
    $val = $(this).val().match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join("");
    $(this).val($val)
});

编辑2

Demo

如果有人想要用小数位来实现这个,那将来参考(是的,我被带走了:P)......

$("input:text.numeric").keyup(function(e){
    if(e.which > 40 || e.which == 8) {
        var num = $(this).val().match(/[0-9,]*/g)[0];
        var decimalNum = $(this).val().match(/[.][0-9]*/) || "";
        if(num) {
            var wholeNum = num.match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join("");
            var resultNum = wholeNum + decimalNum;
            $(this).val(resultNum);
        }
        else
        {
            $(this).val(num);
        }
    }
});

答案 1 :(得分:2)

我认为蒙面输入插件可能是一个很好的解决方案。您可以在此处阅读更多内容:http://digitalbush.com/projects/masked-input-plugin/

答案 2 :(得分:1)

function thousandSeparator(n,sep) {
    var sRegExp = new RegExp('(-?[0-9]+)([0-9]{3})'),
    sValue=n+'';

    if (sep === undefined) {sep=',';}
    while(sRegExp.test(sValue)) {
        sValue = sValue.replace(sRegExp, '$1'+sep+'$2');
    }
    return sValue;
}

来自:http://webdesign.onyou.ch/2010/08/04/javascript-inserting-thousand-separators/

答案 3 :(得分:0)

做这样的事情(未经测试,应该有效):

$(':text').blur(function(){
  var $this = $(this), val = $this.val(), newVal = ''
  for (var i = 0; i < val.length; i++) {
    newVal += val.charAt(i)
    if (!((i + 1) % 3))
      newVal += ','
  }
  $this.val(newVal.slice(0,-1))
})

编辑:见上面约瑟夫的回答。他的时间更短。