現在、のような電話番号を表示しています2124771000
。ただし、数値をより人間が読める形式にフォーマットする必要があります212-477-1000
。例:これが私の現在HTML
です:
<p class="phone">2124771000</p>
現在、のような電話番号を表示しています2124771000
。ただし、数値をより人間が読める形式にフォーマットする必要があります212-477-1000
。例:これが私の現在HTML
です:
<p class="phone">2124771000</p>
回答:
シンプル:http : //jsfiddle.net/Xxk3F/3/
$('.phone').text(function(i, text) {
return text.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3');
});
または:http : //jsfiddle.net/Xxk3F/1/
$('.phone').text(function(i, text) {
return text.replace(/(\d\d\d)(\d\d\d)(\d\d\d\d)/, '$1-$2-$3');
});
注:.text()メソッドは、入力要素では使用できません。入力フィールドのテキストには、.val()メソッドを使用します。
/(\d{3})?(\d{3})(\d{4})$/
市外局番がない場合は、正規表現のもう少し堅牢なものになります(カスタムの置換関数が必要です)
$('#x_phone').on('keypress blur',function() { var ph = $(this).val(); var temp = ph.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3'); $(this).val(temp); //alert(temp); });
var phone = '2124771000',
formatted = phone.substr(0, 3) + '-' + phone.substr(3, 3) + '-' + phone.substr(6,4)
これらの答えのいくつかの組み合わせは次のとおりです。これは入力フィールドに使用できます。7桁と10桁の電話番号を扱います。
// Used to format phone number
function phoneFormatter() {
$('.phone').on('input', function() {
var number = $(this).val().replace(/[^\d]/g, '')
if (number.length == 7) {
number = number.replace(/(\d{3})(\d{4})/, "$1-$2");
} else if (number.length == 10) {
number = number.replace(/(\d{3})(\d{3})(\d{4})/, "($1) $2-$3");
}
$(this).val(number)
});
}
実例:JSFiddle
これで直接質問に答えられるわけではないことはわかっていますが、答えを調べているときに、これは最初に見つけたページの1つでした。したがって、この答えは、私が探していたものと同様のものを探している人のためのものです。
ライブラリを使用して電話番号を処理します。GoogleのLibphonenumberが最善の策です。
// Require `PhoneNumberFormat`.
var PNF = require('google-libphonenumber').PhoneNumberFormat;
// Get an instance of `PhoneNumberUtil`.
var phoneUtil = require('google-libphonenumber').PhoneNumberUtil.getInstance();
// Parse number with country code.
var phoneNumber = phoneUtil.parse('202-456-1414', 'US');
// Print number in the international format.
console.log(phoneUtil.format(phoneNumber, PNF.INTERNATIONAL));
// => +1 202-456-1414
seegnoでこのパッケージを使用することをお勧めします。
米国の電話番号を(XXX)XXX-XXXとしてフォーマットするためのjsfiddleリンクを提供しました
$('.class-name').on('keypress', function(e) {
var key = e.charCode || e.keyCode || 0;
var phone = $(this);
if (phone.val().length === 0) {
phone.val(phone.val() + '(');
}
// Auto-format- do not expose the mask as the user begins to type
if (key !== 8 && key !== 9) {
if (phone.val().length === 4) {
phone.val(phone.val() + ')');
}
if (phone.val().length === 5) {
phone.val(phone.val() + ' ');
}
if (phone.val().length === 9) {
phone.val(phone.val() + '-');
}
if (phone.val().length >= 14) {
phone.val(phone.val().slice(0, 13));
}
}
// Allow numeric (and tab, backspace, delete) keys only
return (key == 8 ||
key == 9 ||
key == 46 ||
(key >= 48 && key <= 57) ||
(key >= 96 && key <= 105));
})
.on('focus', function() {
phone = $(this);
if (phone.val().length === 0) {
phone.val('(');
} else {
var val = phone.val();
phone.val('').val(val); // Ensure cursor remains at the end
}
})
.on('blur', function() {
$phone = $(this);
if ($phone.val() === '(') {
$phone.val('');
}
});
実例:JSFiddle
このようなものを試してください。
jQuery.validator.addMethod("phoneValidate", function(number, element) {
number = number.replace(/\s+/g, "");
return this.optional(element) || number.length > 9 &&
number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, "Please specify a valid phone number");
$("#myform").validate({
rules: {
field: {
required: true,
phoneValidate: true
}
}
});
完全かつ有名なlibphonenumberの小さいバージョンであるlibphonenumber-js(https://github.com/halt-hammerzeit/libphonenumber-js)を検討してください。
素早く汚い例:
$(".phone-format").keyup(function() {
// Don't reformat backspace/delete so correcting mistakes is easier
if (event.keyCode != 46 && event.keyCode != 8) {
var val_old = $(this).val();
var newString = new libphonenumber.asYouType('US').input(val_old);
$(this).focus().val('').val(newString);
}
});
(ライブラリのダウンロードを回避するために正規表現を使用する場合、バックスペース/削除時に再フォーマットを回避すると、タイプミスの修正が容易になります。)
jQueryプラグインを使用して電話番号を自動フォーマットする方法を探しているときに、この質問を見つけました。受け入れられた回答は私のニーズには理想的ではなく、最初に投稿されてから6年間で多くのことが起こりました。私は最終的に解決策を見つけ、後世のためにここに文書化しています。
問題
電話番号のhtml入力フィールドに、ユーザーが入力した値を自動フォーマット(マスク)したいと思います。
解決
Cleave.jsをチェックしてください。これは、この問題や他の多くのデータマスキングの問題を解決するための非常に強力で柔軟で簡単な方法です。
電話番号のフォーマットは次のように簡単です。
var cleave = new Cleave('.input-element', {
phone: true,
phoneRegionCode: 'US'
});
これが役立つかもしれません
var countryCode = +91;
var phone=1234567890;
phone=phone.split('').reverse().join('');//0987654321
var formatPhone=phone.substring(0,4)+'-';//0987-
phone=phone.replace(phone.substring(0,4),'');//654321
while(phone.length>0){
formatPhone=formatPhone+phone.substring(0,3)+'-';
phone=phone.replace(phone.substring(0,3),'');
}
formatPhone=countryCode+formatPhone.split('').reverse().join('');
あなたは+ 91-123-456-7890を取得します