2017-03-28 3 views
1

ブラジルでは、9桁の電話番号がいくつかありますが、デフォルトは8です。そのため、一部の開発者がjQuery Maskedinputプラグインを使用して解決策を書いてきました。私はこの機能を持っている:既にDBから入力された入力を正しくマスクする方法はありますか?

$("#telephone").mask("(99) 9999-9999?9"); 
$("#telephone").blur(function(event) { 
    if($(this).val().length == 15){ 
     $('#telephone').mask('(99) 99999-999?9'); 
    } else { 
     $('#telephone').mask('(99) 9999-9999?9'); 
    } 
}); 

それは何:電話番号は8桁の数字を持っている場合、それは9桁を無視し、(11)0000-0000デフォルトの形式、として値を残します。電話番号が9桁の場合、2番目のブロックの1桁目を1番目のブロックの最後に置く。例:this(11)9123-45678は(11)91234-5678となるため、ここで4が削除されている最後のグループから挿入して1番目のグループの最後に挿入すると、1番目のグループは5桁のようになります。

入力が既にdbから入力されている場合、マスクは適用されず、「ぼかし」でのみ機能するという問題があります。入力値に9桁の数字があるかどうかを確認してから、ぼかしで動作するようにマスクを適用するという奇妙な方法はありますか?

さらに、コードを再利用する可能性を持たせるために、要素IDをパラメータとして渡す関数に変換する必要があります(理想的なのは1 ID以上である可能性があります)。助けて...

mask_phone('#telephone, #fax'); 

感謝を

function mask_phone(inputID) { 
    $k(inputID).mask("(99) 9999-9999?9"); 
    $k(inputID).blur(function(event) { 
     if($k(this).val().length == 15) { 
      $k(inputID).mask('(99) 99999-999?9'); 
     } else { 
      $k(inputID).mask('(99) 9999-9999?9'); 
     } 
    }); 
} 

がそれを呼び出す:だから、私は、以下の機能を作成しましたが、私はそれを正しく呼び出していた場合、私はわかりません!

答えて

1

この種の質問は非常に具体的なので回答は得にくいですが、私は自由な時間を過ごしました。あなたはデモhereをチェックすることができます。それはとても良いアプローチではありませんが、私はその特定のライブラリでできることは最高です。

var mask = function(ids) { 
    var el = $(ids); 
    $.each(el, function(i, elem) { 
    //Get element 
    var input = $(elem); 

    //Store the original value (only numbers) 
    var value = input.val().replace(/[^0-9\.]/g, ''); 

    //Choose mask according to length 
    var mask = "(99) 9999-9999"; 
    if (value.length>10) { 
     mask = "(99) 99999-9999" 
    } 

    //Trigger the mask  
    input.mask(mask); 

    //Emulate the keypresses from original value 
    for (var i = 0; i < value.length; i++) { 
     input.trigger({ 
     type: 'keypress', 
     keyCode: value.charCodeAt(i) 
     }); 
    } 
    //Done 
    }); 
} 

これはすぐにあなたの問題を解決しないかもしれないが、私はそれはあなたの特定のケースで最高の作品何を考え出すに右のトラックにあなたを置くと確信しています。

+0

ありがとうございました、私は見てみましょう! BTW、はい、私は多くの「疑わしい答え」の質問をしてきましたが、それについて教えてください:(ブラジルは開発者やフロントエンドの人にとって苦痛です。) – joaogdesigner

+0

この[CodePen](http://codepen.io/Bes7weB/pen/QpVVZE)はonload値にはうまくいきますので、私に教えてください...「blur」のように。もっと複雑なスクリプトを使う理由を教えてください(私はあまりにもあまりにも... –

関連する問題