2017-02-13 5 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

私の考えは書式の電話番号があることが十分に汎用的ではないようですということです'subscribable'に追加されました。 – Agalo

答えて

0

ここは論理エラーのようです:IMOでなければなりません

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

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

ありがとう!完璧に働いた! –

関連する問題