Варианты форматирования номера телефона
Доброго времени суток, форумчане! Как отформатировать различные номера телефонов? Есть функция, форматирует только мобильный телефон, и шестизначный, возможно ли её сделать более универсальной, например pair1 и pair2 рассчитывать от конца номера, тогда привязка к длине номера не нужна будет.
function formatPhone(phone) { if (phone.length === 11) { var countryCode = phone.slice(0, 1); var operatorCode = phone.slice(1, 4); var triade = phone.slice(4, 7); var pair1 = phone.slice(7, 9); var pair2 = phone.slice(9, 11); return "+"+countryCode + "(" + operatorCode + ")" + triade + "-" + pair1 + "-" + pair2; } if (phone.length === 6) { var countryCode = "7"; var cityCode = "8443"; var pair1 = phone.slice(0, 2); var pair2 = phone.slice(2, 4); var pair3 = phone.slice(4, 6); return "+" + countryCode + "(" + cityCode + ")" + pair1 + "-" + pair2 + "-" + pair3; } return phone; }; |
Если приходит номер 88443454545 то должно отформатироваться так: +7(8443)45-45-45, а на деле форматируется как сотовый номер: +7(844)345-45-45, захарткодить код города не самая удачная идея, коды городов разные приходят...
|
Загугли «jquery mask»
|
Цитата:
Или код города случайно взял? |
ksa,
взломали, и завтра позвонят из "полиции" и скажут, что ваш сын/брат/дочь/сестра задержан за преступление, но можно договорится. ) |
laimas, это номер "Водопроводно-канализационное хозяйство". :D
|
Цитата:
|
Цитата:
|
Цитата:
|
Хотя возможно как то можно... Вот код в котором вызываю вышеописанную функцию
app.fioWithPhoneTpl = function (row) { return "<div><span style='float: left;'>" + formatFio(row.clientFio) + "</span><span style='float: right;'>" + formatPhone(row.clientPhone) + "</span></div>"; }; |
Это template ячейки грида, возможно сюда прикрутить маску?
|
AlexTrader,
разбейте строку рег. выражением начиная справа по две цифры, кроме крайней слева, где одна. Первая слева и две следующие справа по правилу 0 или 1/2 соответственно. Останется проверить у этого среза массива (с первого) чему равен первый его элемент (пусто или номер) и сформировать. |
Цитата:
|
function formatPhone(phone) { phone = phone.match(/(\d{0,1})(\d{0,2})(\d{0,2})(\d{2})(\d{2})(\d{2})$/).slice(1); return (phone[0] ? '+7(' + phone.slice(1,3).join('') + ')' : '') + phone.slice(-3).join('-') } Если какие-то еще проверки нужны, добавить, иначе срез можно брать начиная и со второго элемента, так как все равно всегда с +7. |
laimas, но телефоны разные приходят: 89278654321, 88443454545, 454545, а на выходе нужно: +7(927)865-43-21, +7(8443)45-45-45, +7(8443)45-45-45 (если не указан код города то по умолчанию ставим 8443)
|
Цитата:
if(!(phone = phone.replace(/\D/g, '')).length) { alert('Error'); return } |
Часовой пояс GMT +3, время: 02:18. |