在特定字符计数javascript后放置空格

时间:2014-01-08 18:08:07

标签: javascript jquery

我正在编写一个脚本,它会在每4个数字后面放一个空格来实现这个目的我编写一个工作正常的脚本

这就像

function putSpace(el, after) {
        putSapceAfter = putSapceAfter || 4;
        var v = el.value.replace(/[^\dA-Z]/g, ''),
            reg = new RegExp(".{" + putSapceAfter + "}","g")
        el.value = v.replace(reg, function (a, b, c) {
            return a + ' ';
        });
    }

    var el = document.getElementById('numerDom');
    el.addEventListener('keyup', function () {
        putSpace(this, 5);
    });

现在如果数字从6011或65开始,那么我想在4位数之后放置第一个空格,然后在文本框内的每5位数之后休息,其他每4位数后放一个空格。

提前致谢。

1 个答案:

答案 0 :(得分:0)

这应该做你想要的:

String.prototype.chunk = function(n) {
    var ret = [];
    for(var i=0, len=this.length; i < len; i += n) {
       ret.push(this.substr(i, n))
    }
    return ret
};

function insertSpace() {
  // Disregard everything bar digits and captals
  this.value = this.value.replace(/[^\dA-Z]/g, '')

  // Start with 6011 or 65
  var hit = this.value.match(/^(6011|65)/);

  if(hit){
    var part_1 = this.value.slice(0,4),
        part_2 = this.value.slice(4).chunk(5).join(" ");

    if(part_1.length === 4){
      this.value = part_1 + " " + part_2;
    }
  } else {
    this.value = this.value.chunk(4).join(" ");
  }
}

var el = document.getElementById('numerDom');
el.addEventListener('keyup', insertSpace, false);

我从这里获得了String.prototype.chunk功能: How can I insert a character after every n characters in javascript?

这是fiddle