[자바스크립트] 전화번호 마스킹을 시도하다.

2013. 8. 27. 14:06IT/Web-JavaScript



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
    function fn_maskPhone(obj) { 
        obj.value =  fn_PhoneNumStr(obj.value); 
    } 
    
    function fn_PhoneNumStr(str){ 
        var RegNotNum  = /[^0-9]/g; 
        var RegPhoneNum = ""
        var DataForm   = ""
        
        // return blank     
        if( str == "" || str == null ) return ""
        
        // delete not number
        str = str.replace(RegNotNum,''); 
           
        if( str.length < 4 ) return str; 
        
        if( str.length > 3 && str.length < 7 ) { 
               DataForm = "$1-$2"
            RegPhoneNum = /([0-9]{3})([0-9]+)/; 
        } else if(str.length == 7 ) {
            DataForm = "$1-$2"
            RegPhoneNum = /([0-9]{3})([0-9]{4})/; 
        } else if(str.length == 8 ) {
            DataForm = "$1-$2-$3"
            RegPhoneNum = /([0-9]{3})([0-9]{4})([0-9]+)/; 
        } else if(str.length == 9 ) {
            DataForm = "$1-$2-$3"
            RegPhoneNum = /([0-9]{3})([0-9]{4})([0-9]+)/; 
        } else if(str.length == 10){ 
            if(str.substring(0,2)=="02"){
                DataForm = "$1-$2-$3"
                RegPhoneNum = /([0-9]{3})([0-9]{4})([0-9]+)/; 
            }else{
                DataForm = "$1-$2-$3"
                RegPhoneNum = /([0-9]{3})([0-9]{4})([0-9]+)/;
            }
        } else if(str.length > 10){ 
            DataForm = "$1-$2-$3"
            RegPhoneNum = /([0-9]{3})([0-9]{4})([0-9]+)/; 
        } 
 
        if(RegPhoneNum != ''){
            while( RegPhoneNum.test(str) ) {  
                str = str.replace(RegPhoneNum, DataForm);  
            }
        }
        return str; 
    } 
 
========================================
 
<input type="text" name="ctmmnyContactNo" class="input" value="" onKeyDown="fn_maskPhone(this);" 
  onKeyUp="fn_maskPhone(this);" maxlength="13" />
 


=================================================

출처 : http://blog.naver.com/coollapop/80098787413

=================================================


그냥 전화번호를 편하게 입력할 수 있지 않을까 고민을 하며 작성을 해보다가 도저히 해결이 안 되서

출처의 원본 소스를 거의 그대로 사용해보았으나 스크립트 오류가 발생!!!

그 이유를 고민하고 인터넷을 통해 여러 고견들을 참고한 결과

원본에는 원 코더의 배려(?)인지 str.length==8 부분이 빠져 있었음. 그래서, 그 부분을 추가하고 여러모로 테스트 해 본 결과 이제는 제대로 출력이 됨.