Есть ли способ отформатировать, например: 0000000000 в (000) 000-0000? Я возвращаю список, содержащий набор телефонных номеров, которые еще не сформированы. Я бы хотел его отформатировать. Вот что у меня в View:

<%= Html.ListBox("phoneList")%>

И с контроллера:

ViewData["phoneList"] = new SelectList(phoneList);

Изменить

$('#phoneList').each(function() {
                var phoneNumber = $(this).text();
                var formatPhoneNumber = phoneNumber.replace(/(\d{3})(\d{3})(\d{4})/, '($1)$2-$3');
                alert(formatPhoneNumber);
            });

Как мне вернуть это в ListBox?

4
hersh 27 Авг 2010 в 01:01

2 ответа

Лучший ответ

Если вы говорите, что хотите сделать это на стороне клиента, а затем, учитывая номер телефона в переменной, вы можете сделать это:

http://jsfiddle.net/HZbXv/

var str = "0000000000";

var res = '(' + str.substr(0,3) + ')' + str.substr(3,3) + '-' + str.substr(6);

alert(res);

Или это:

http://jsfiddle.net/HZbXv/1/

var str = "0000000000";

var res = str.replace(/(\d\d\d)(\d\d\d)(\d\d\d\d)/, '($1)$2-$3');

alert(res);

РЕДАКТИРОВАТЬ:

Как отмечает @Nick Craver Вторая версия может быть сокращена с помощью:

var res = str.replace(/(\d{3})(\d{3})(\d{4})/, '($1)$2-$3');
6
user113716 26 Авг 2010 в 21:17

Вот так просто. Можно использовать простой оператор if, если вы собираетесь иметь дело с несколькими числами.

    YourVariable = YourVariable.replace(/(\d{1})(\d{3})(\d{3})(\d{4})/, "+$1 ($2)-$3-$4"); 

Дисплеи: +1 (800) -555-5555

    YourVariable = YourVariable.replace(/(\d{3})(\d{3})(\d{4})/, "($1)-$2-$3"); 

Дисплеи (555) -555-5555

Оператор if (мой собственный код):

if (form.FaxNumber.length = 11){
    form.FaxNumber.value = form.FaxNumber.value.replace(/(\d{1})(\d{3})(\d{3})(\d{4})/, "+$1 ($2)-$3-$4");
}
if (form.FaxNumber.length = 10){
    form.FaxNumber.value = form.FaxNumber.value.replace(/(\d{3})(\d{3})(\d{4})/, "($1)-$2-$3");
}
1
iato 30 Май 2016 в 16:14