Я использую аннотации данных в моем проекте ASP.NET MVC4 для проверки на стороне клиента по электронной почте и по телефонам. Электронная почта успешно проверки на стороне клиента, но телефон не делает - это позволяет мне вводить недопустимые символы и только предупреждает меня о представлении формы (а не сразу после того, как персонаж набирается)Работа по проверке аннотации данных электронной почты, но телефон не
В модели:
[Required(ErrorMessage = "Email is required")]
[DataType(DataType.EmailAddress)]
[EmailAddress]
[Display(Name = "Email")]
public string Email{ get; set; }
[Required(ErrorMessage = "Mobile is required")]
[DataType(DataType.PhoneNumber)]
[Phone]
[Display(Name = "Mobile number")]
public string Mobile { get; set; }
по мнению я считаю, я в том числе правильные ссылки сценария:
<script type="text/javascript" src="~/Scripts/jquery.validate.min.js" ></script
<script type="text/javascript" src="~/Scripts/jquery.validate.unobtrusive.min.js" ></script>
..и с помощью HTML хелперы (я использую TextBoxFor, а не EditorFor, как я применяю атрибуты класса, которые у меня есть опущены для ясности)
@Html.LabelFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
@Html.TextBoxFor(model => model.Email, new { @type = "email" })
@Html.LabelFor(model => model.Mobile)
@Html.ValidationMessageFor(model => model.Mobile)
@Html.TextBoxFor(model => model.Mobile, new { @type = "phone" })
Что мне не хватает?
Возможно, было бы лучше спросить OP (используя комментарий), какой тип телефона используется; это может быть поддерживаемый тип, в этом случае это не ответ ... – einpoklum
@OzAnt - вы говорите, что вместо type = "phone" я должен использовать новый тип = "tel" ?? –
@LiamWeston - Не совсем: w3schools говорит, что HTML5 определяет тип ввода телефона с типом = tel, а не с телефоном, НО этот тип не поддерживается ни одним браузером (поскольку, по моему мнению, в каждой стране номера телефонов различны). Таким образом, вам может быть лучше проверить свой номер телефона с вашим собственным регулярным выражением в вашей модели и применить его на стороне клиента. Похоже, что это скорее намек, так как iPhone распознает type = "tel" и полностью меняет клавиатуру на стандартную клавиатуру телефона, см. [Link] http://html5doctor.com/html5-forms-input-types/#input -tel – OzAnt