2011-11-15 71 views
1

我有JavaScript代碼的HTML頁面設置的電話號碼格式「(XXX)XXX-XXXX」,自動在用戶打字。設置美國電話號碼的格式自動

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Untitled Document</title> 
<script type="text/javascript"> 
/*Start of phone number formating */ 
var n; 
var p; 
var p1; 
function format_phone(){ 
p=p1.value 
if(p.length==3){ 
    pp=p; 
    d4=p.indexOf('(') 
    d5=p.indexOf(')') 
    if(d4==-1){ 
     pp="("+pp; 
    } 
    if(d5==-1){ 
     pp=pp+")"; 
    } 
    document.form4.phone_number.value=""; 
    document.form4.phone_number.value=pp; 
} 
if(p.length>3){ 
    d1=p.indexOf('(') 
    d2=p.indexOf(')') 
    if (d2==-1){ 
     l30=p.length; 
     p30=p.substring(0,4); 
     p30=p30+")" 
     p31=p.substring(4,l30); 
     pp=p30+p31; 
     document.form4.phone_number.value=""; 
     document.form4.phone_number.value=pp; 
    } 
    } 
if(p.length>5){ 
    p11=p.substring(d1+1,d2); 
    if(p11.length>3){ 
    p12=p11; 
    l12=p12.length; 
    l15=p.length 
    p13=p11.substring(0,3); 
    p14=p11.substring(3,l12); 
    p15=p.substring(d2+1,l15); 
    document.form4.phone_number.value=""; 
    pp="("+p13+")"+p14+p15; 
    document.form4.phone_number.value=pp; 
    } 
    l16=p.length; 
    p16=p.substring(d2+1,l16); 
    l17=p16.length; 
    if(l17>3&&p16.indexOf('-')==-1){ 
     p17=p.substring(d2+1,d2+4); 
     p18=p.substring(d2+4,l16); 
     p19=p.substring(0,d2+1); 
    pp=p19+p17+"-"+p18; 
    document.form4.phone_number.value=""; 
    document.form4.phone_number.value=pp; 
    } 
} 

setTimeout(format_phone,100) 
} 
function getIt(m){ 
    n=m.name; 
    p1=m 
    format_phone() 
} 
/* End of phone number formating */ 

</script> 

</head> 

<body> 
<form id="form4" name="form4" method="post" action="" onSubmit="return validation();"> 
<input name="phone_number" type="text" id="phone_number" style="float:left; margin-left:20px;" align="top" value="Phone Number" 
    onFocus="if(this.value==this.defaultValue)this.value='';" maxlength="13" onclick="javascript:getIt(this)"/> 
    </form> 
</body> 
</html> 

我需要修改劇本,所以它會自動排列像 數字 「(XXX)XXX-XXXX」

+0

FWIW,我發現這些腳本瘋狂地討厭。在我輸入的時候不要改變文字。 –

+0

正如有人居住在美國境外,我只能說:請不要!並非世界上每個電話號碼都有這種格式。 – Niki

回答

2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Untitled Document</title> 
<script type="text/javascript"> 
/*Start of phone number formating */ 
var n; 
var p; 
var p1; 
function format_phone(){ 
p=p1.value 
if(p.length==3){ 
    pp=p; 
    d4=p.indexOf('(') 
    d5=p.indexOf(')') 
    if(d4==-1){ 
     pp="("+pp; 
    } 
    if(d5==-1){ 
     pp=pp+") "; 
    } 
    document.form4.phone_number.value=""; 
    document.form4.phone_number.value=pp; 
} 
if(p.length>3){ 
    d1=p.indexOf('(') 
    d2=p.indexOf(')') 
    if (d2==-1){ 
     l30=p.length; 
     p30=p.substring(0,4); 
     p30=p30+") " 
     p31=p.substring(5,l30); 
     pp=p30+p31; 
     document.form4.phone_number.value=""; 
     document.form4.phone_number.value=pp; 
    } 
    } 
if(p.length>7){ 
    p11=p.substring(d1+1,d2); 
    if(p11.length>4){ 
    p12=p11; 
    l12=p12.length; 
    l15=p.length 
    p13=p11.substring(0,4); 
    p14=p11.substring(4,l12); 
    p15=p.substring(d2+1,l15); 
    document.form4.phone_number.value=""; 
    pp="("+p13+") "+p14+p15; 
    document.form4.phone_number.value=pp; 
    } 
    l16=p.length; 
    p16=p.substring(d2+2,l16); 
    l17=p16.length; 
    if(l17>3&&p16.indexOf('-')==-1){ 
     p17=p.substring(d2+1,d2+5); 
     p18=p.substring(d2+5,l16); 
     p19=p.substring(0,d2+1); 
    pp=p19+p17+"-"+p18; 
    document.form4.phone_number.value=""; 
    document.form4.phone_number.value=pp; 
    } 
} 

setTimeout(format_phone,100) 
} 
function getIt(m){ 
    n=m.name; 
    p1=m 
    format_phone() 
} 
/* End of phone number formating */ 

</script> 

</head> 

<body> 
<form id="form4" name="form4" method="post" action="" onSubmit="return validation();"> 
<input name="phone_number" type="text" id="phone_number" style="float:left; margin-left:20px;" align="top" value="Phone Number" 
    onFocus="if(this.value==this.defaultValue)this.value='';" maxlength="14" onclick="javascript:getIt(this)"/> 
    </form> 
</body> 
</html> 
1

只是 CTRL+F") "取代 ")"

它看起來並不像偉大的代碼雖然。我建議有一個看蒙面輸入插件:

http://digitalbush.com/projects/masked-input-plugin/

+1

替換)with)+空格將不起作用。由於的indexOf將返回不同values.I同意,沒有良好的代碼雖然 – hungryMind

+0

你說得對,好抓。 –

0

PhoneFormat.com有一個JavaScript庫,將處理的格式,並與一些的onkeyup連接到您的文本框的事件會給你一個漂亮好的解決方案

1

此功能爲我工作。它返回這種格式:(XXX)XXX-XXXX

<input type="text" id="phone" onkeyup="GetPhoneFormat('phone')"> 

<script> 
function GetPhoneFormat(id) { 
var str = document.getElementById(id).value; 
if (str.length == 3) { 
var ind = str.substring(0, 3); 
document.getElementById(id).value = '('+ind+')'; 
} 
if (str.length == 8) { 
var ind = str.substring(0, 8); 
document.getElementById(id).value = ind+'-'; 
} 
} 
</script> 
相關問題