在运行中格式化INPUT中的电话号码

时间:2013-04-07 02:59:33

标签: jquery phone-number

我正在寻找一个能够重新格式化电话号码的功能,因为该人正在键入电话号码,因此它将显示为:(212)477-1000

我找到了一个片段并创建了一个函数,它将获取值并重新格式化。有没有人知道另一个片段2124771000,因为这个人在“动态”中输入它?


<input value="2124771000" type=text id="DPRnumber">


$('#DPRnumber').on('click', 'input', function(e){

    $(".phone").text(function(i, text) {
        text = text.replace(/(\d{3})(\d{3})(\d{4})/, "($1) $2-$3");
        return text;
    });
}

1 个答案:

答案 0 :(得分:0)

我知道它很长但是效果很好。

<script language="javascript">
var zChar = new Array(' ', '(', ')', '-', '.');
var maxphonelength = 14;
var phonevalue1;
var phonevalue2;
var cursorposition;

function ParseForNumber1(object){
  phonevalue1 = ParseChar(object.value, zChar);
}

function ParseForNumber2(object){
phonevalue2 = ParseChar(object.value, zChar);
}

function backspacerUP(object,e) { 
  if(e){ 
    e = e 
  } else {
 e = window.event 
  } 
  if(e.which){ 
    var keycode = e.which 
  } else {
    var keycode = e.keyCode 
  }

  ParseForNumber1(object)

  if(keycode >= 48){
    ValidatePhone(object)
  }
}

function backspacerDOWN(object,e) { 
 if(e){ 
 e = e 
 } else {
  e = window.event 
 } 
 if(e.which){ 
  var keycode = e.which 
 } else {
   var keycode = e.keyCode 
  }
  ParseForNumber2(object)
} 

function GetCursorPosition(){

 var t1 = phonevalue1;
    var t2 = phonevalue2;
 var bool = false
  for (i=0; i<t1.length; i++)
  {
   if (t1.substring(i,1) != t2.substring(i,1)) {
  if(!bool) {
     cursorposition=i
    window.status=cursorposition
      bool=true
     }
   }
  }
}

function ValidatePhone(object){

  var p = phonevalue1

  p = p.replace(/[^\d]*/gi,"")

  if (p.length < 3) {
    object.value=p
  } else if(p.length==3){
pp=p;
d4=p.indexOf('(')
d5=p.indexOf(')')
if(d4==-1){
  pp="("+pp;
}
if(d5==-1){
  pp=pp+")";
}
object.value = pp;
  } else if(p.length>3 && p.length < 7){
p ="(" + p; 
l30=p.length;
p30=p.substring(0,4);
p30=p30+") " 

p31=p.substring(4,l30);
pp=p30+p31;

object.value = pp; 

 } else if(p.length >= 7){
p ="(" + p; 
l30=p.length;
p30=p.substring(0,4);
p30=p30+") " 

p31=p.substring(4,l30);
pp=p30+p31;

l40 = pp.length;
p40 = pp.substring(0,9);
p40 = p40 + "-"

p41 = pp.substring(9,l40);
ppp = p40 + p41;

object.value = ppp.substring(0, maxphonelength);
  }

  GetCursorPosition()

  if(cursorposition >= 0){
if (cursorposition == 0) {
  cursorposition = 2
} else if (cursorposition <= 2) {
  cursorposition = cursorposition + 1
} else if (cursorposition <= 4) {
  cursorposition = cursorposition + 3
} else if (cursorposition == 5) {
  cursorposition = cursorposition + 3
} else if (cursorposition == 6) { 
  cursorposition = cursorposition + 3 
} else if (cursorposition == 7) { 
  cursorposition = cursorposition + 4 
} else if (cursorposition == 8) { 
  cursorposition = cursorposition + 4
  e1=object.value.indexOf(')')
  e2=object.value.indexOf('-')
  if (e1>-1 && e2>-1){
    if (e2-e1 == 4) {
      cursorposition = cursorposition - 1
    }
  }
} else if (cursorposition == 9) {
  cursorposition = cursorposition + 4
} else if (cursorposition < 11) {
  cursorposition = cursorposition + 3
} else if (cursorposition == 11) {
  cursorposition = cursorposition + 1
} else if (cursorposition == 12) {
  cursorposition = cursorposition + 1
} else if (cursorposition >= 13) {
  cursorposition = cursorposition
}

var txtRange = object.createTextRange();
txtRange.moveStart( "character", cursorposition);
txtRange.moveEnd( "character", cursorposition - object.value.length);
txtRange.select();
 }

}

function ParseChar(sStr, sChar)
{

  if (sChar.length == null) 
   {
    zChar = new Array(sChar);
  }
    else zChar = sChar;

  for (i=0; i<zChar.length; i++)
  {
  sNewStr = "";

  var iStart = 0;
  var iEnd = sStr.indexOf(sChar[i]);

  while (iEnd != -1)
  {
    sNewStr += sStr.substring(iStart, iEnd);
    iStart = iEnd + 1;
    iEnd = sStr.indexOf(sChar[i], iStart);
    }
    sNewStr += sStr.substring(sStr.lastIndexOf(sChar[i]) + 1, sStr.length);

    sStr = sNewStr;
  }

  return sNewStr;
}
</script>
相关问题