Как отформатировать номер телефона с помощью jQuery
в настоящее время я показываю номера телефонов, такие как 2124771000
. Однако мне нужно, чтобы номер был отформатирован в более удобочитаемой форме, например:212-477-1000
. Вот мой текущий HTML
:
<p class="phone">2124771000</p>
11 ответов:
просто:http://jsfiddle.net/Xxk3F/3/
$('.phone').text(function(i, text) { return text.replace(/(\d{3})(\d{3})(\d{4})/, '--'); });
или:http://jsfiddle.net/Xxk3F/1/
$('.phone').text(function(i, text) { return text.replace(/(\d\d\d)(\d\d\d)(\d\d\d\d)/, '--'); });
Примечание: The .метод text () нельзя использовать для входных элементов. Для ввода текста поля используйте поле .функция val() метод.
var phone = '2124771000', formatted = phone.substr(0, 3) + '-' + phone.substr(3, 3) + '-' + phone.substr(6,4)
Не забудьте убедиться, что вы работаете с чисто целых чисел.
var separator = '-'; $( ".phone" ).text( function( i, DATA ) { DATA .replace( /[^\d]/g, '' ) .replace( /(\d{3})(\d{3})(\d{4})/, '' + separator + '' + separator + '' ); return DATA; });
используйте библиотеку для обработки номера телефона. Libphonenumber от Google это ваш лучший выбор.
// 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.
попробуйте что-то вроде этого..
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 } } });
вот комбинация некоторых из этих ответов. Это можно использовать для полей ввода. Имеет дело с телефонными номерами длиной 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})/, "-"); } else if (number.length == 10) { number = number.replace(/(\d{3})(\d{3})(\d{4})/, "() -"); } $(this).val(number) }); }
живой пример: JSFiddle
Я знаю, что это не дает прямого ответа на вопрос, но когда я искал ответы, это была одна из первых страниц, которые я нашел. Так что этот ответ для тех, кто ищет что-то похожее на то, что я искал.
рассмотрим libphonenumber-js (https://github.com/halt-hammerzeit/libphonenumber-js), который является уменьшенной версией полного и известного libphonenumber.
быстрый и грязный пример:
$(".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); } });
(Если вы используете регулярное выражение, чтобы избежать загрузки библиотеки, избегайте переформатирования на backspace/delete, что облегчит исправление опечаток.)
Я предоставил ссылку jsfiddle для вас, чтобы формат номера США (XXX) XXX-XXX
$('.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. Принятый ответ не был идеальным для моих нужд, и многое произошло за 6 лет с момента его первоначального размещения. В конце концов я нашел решение и документировать его здесь для потомков.
вход:
4546644645
код:
PhoneNumber = Input.replace(/(\d\d\d)(\d\d\d)(\d\d\d\d)/, "()-");
выход:
(454)664-4645
может быть это поможет
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