Проверка MVC для номера телефона в США (000) -000-0000 или 000-000-0000 - PullRequest
1 голос
/ 23 марта 2012

Как вы можете аннотировать аннотацию данных телефонного номера для проверки телефонного номера?

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

    [Required]
    [DataType(DataType.PhoneNumber)]
    [RegularExpression(@"^(\d{10})$", ErrorMessage = "Please enter proper phone number.")]
    [Display(Name = "phone")]
    public string Phone { get; set; }

Ответы [ 4 ]

10 голосов
/ 17 октября 2012

Я смотрел на то же самое. Вот что я закончил:

[Required]
[DataType(DataType.PhoneNumber)]
[Display(Name = "Phone number")]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Not a valid number")]
public string PhoneNumber { get; set; }

Это будет искать 3 номера; (возможно, круглые скобки вокруг них), возможно, с тире, точкой или пробелом между ними; затем 3 числа, возможно тире, точка или пробел между; затем 4 номера.

Я выложил это вместе отсюда: http://blog.stevenlevithan.com/archives/validate-phone-number

2 голосов
/ 23 марта 2012

Возможно, вас заинтересует плагин с маской jQuery.

http://digitalbush.com/projects/masked-input-plugin/

Или вы можете установить .blur для ввода номера телефона, который будет форматировать ввод пользователя, если есть 10 цифр. Например:

$("#PhoneNumber").blur(function (event) {
    var phoneNumber = $(this).val();
    // replace all non-numeric characters in phoneNumber
    // do regex check on remaining digits to ensure there are 10 digits
    // if regex passes, format phoneNumber however you like
    %(this).val(phoneNumber);
});

Однако во втором случае вам придется изменить аннотацию данных регулярного выражения, поскольку форматирование телефонного номера таким образом всегда будет не соответствовать текущей проверке регулярного выражения. Независимо от формата, который вы хотите, чтобы пользователь предоставил номер телефона, должен использоваться формат проверки регулярного выражения.

2 голосов
/ 01 августа 2012

У меня тот же сценарий, но я смог достичь вышеуказанного формата, например: (111) 111-1111, когда начинаю набирать номер телефона, он заставляет изменить формат, как требуется, используя следующие фрагменты кода / изменения

  1. Загрузитьфайл сценария из файл сценария маски телефона
  2. Тег функции jscript, например:

    @Html.TextBoxFor(m => m.DayPhone, new { @class = "form_input",
                       onkeydown = "javascript:backspacerDOWN(this,event);",
                       onkeyup = "javascript:backspacerUP(this,event);" })
    

    в синтаксисе вашего бритвы или в удобном формате asp.net html.

надеюсь, что это поможет вам !!!

0 голосов
/ 23 марта 2012

Если я правильно понимаю ваш вопрос, вы можете использовать RegularExpressionAttribute , а затем с помощью jquery unobrtrusive validation вы получите подтверждение своей вводимой информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...