2017-02-13 1 views
0

전화 번호를 xxx-xxx-xxxx 형식으로 형식화하는 맞춤형 가입 함수를 만들었고 정말 잘 작동합니다. 그러나 사용자가 11 자리가 넘는 값을 입력 할 경우 숫자를 형식화하지 않도록 새로운 제약 조건을 추가해야합니다. 이 코드가 여전히 11 자리 이상의 입력 형식을 지정하는 이유를 설명해 주시겠습니까?사용자 정의 knockout 가입 함수

ko.subscribable.fn.formatPhoneNumber = function() { 
     return ko.computed({ 
      read: function() { 
       if (this().length > 11) { 
        return this(); 
       } else { 
        return this() 
         .replace(/\D+/g, "") 
         .replace(/^[01]/, "") 
         .replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3") 
         .substring(0, 12); 
       } 
      }, 
      write: function (value) { 
       if (this(value).length > 11) { 
        this(value); 
        this.valueHasMutated(); 
       } else { 
        this(value.replace(/\D+/g, "") 
         .replace(/^[01]/, "") 
         .replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3") 
         .substring(0, 12)); 
        this.valueHasMutated(); 
       } 
      }, 
      owner: this 
     }).extend({ notify: 'always' }); 
    }; 
+0

내 생각은 그 형식 전화 번호가있을 정도로 일반적인 될 것 같지 않습니다됩니다 '구독 가능'항목에 추가되었습니다. – Agalo

답변

0
여기에 논리적 오류가 될 것으로 보인다

: IMO

if (this(value).length > 11) { ... 

가 있어야한다 :

if (value.length > 11) { ... 
+0

감사합니다! 완벽하게 일했습니다! –