2017-08-21 3 views
0

ここでは、最初の数字としてユーザータイプ0(ゼロ)を避けるためにこのマスク関数を変更できますか?どのようにこのマスクJavaScript関数をゼロから開始しないように変更するには?

これは、この形式で入力をフォーマットするマスク機能である:

(99) 9999-9999 or (99) 99999-9999 

一度ここブラジルでcelphoneは現在、9桁の数字と通常の携帯電話8桁の数字を持っています。しかし、都市コード(カッコ間)は0(ゼロ)で始まらない可能性があります。それ以外の場合は電話番号が壊れてしまいます。入力された最初の桁がゼロの場合は

// telefone com 9 digitos   
var SPMaskBehavior = function (val) { 
    return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009'; 
}, 
spOptions = { 
    onKeyPress: function(val, e, field, options) { 
     field.mask(SPMaskBehavior.apply({}, arguments), options); 
    } 
}; 

$('#telefone').mask(SPMaskBehavior, spOptions); 

はここで...

the mask link

+0

使用しているマスクの機能は、私は、パターンの最初の部分を持っているでしょう正規表現関数[1-9]を追加することになり、これをサポートしない場合があります。 –

+0

右、私はこのregパターンを見つけましたが、これをマスク関数[LINK REG PATTERN]に挿入する方法はわかりません(https://stackoverflow.com/questions/32614989/disable-zero-as-first-letter-in -input) – Ailton

+0

あなたはOnKeypressの振る舞いの中に置くことができます。正規表現が一致しない場合、falseを返すことができます。私はmyRegex.test(val)のようなものを使用しません) –

答えて

0

のシンプルなif条件を使用してチェックすることは容易であること。
値の2番目の文字を確認する必要があります。最初は(です。

ゼロの場合は削除し、optionnalyはユーザーに通知します。

// telefone com 9 digitos   
 
var SPMaskBehavior = function (val) { 
 
    return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009'; 
 
}, 
 
    spOptions = { 
 
     onKeyPress: function(val, e, field, options) { 
 
     if(field.val()=="(0"){ 
 
      console.log("NO! No zero to begin."); 
 
      field.val(field.val().substr(0,1)); // Removes the 0 
 
     } 
 
     field.mask(SPMaskBehavior.apply({}, arguments), options); 
 
     } 
 
    }; 
 

 
$('#telefone').mask(SPMaskBehavior, spOptions);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.11/jquery.mask.min.js"></script> 
 

 
<input id="telefone">

+0

ありがとうございました!正確に私が必要なもの。 – Ailton

関連する問題