Sto utilizzando le annotazioni di dati nel mio progetto ASP.NET MVC4 per eseguire la convalida sul lato client nei campi di posta elettronica e telefono. La posta elettronica è convalidare con successo nel client, ma telefono non - mi permette di inserire i caratteri non validi e mi avverte soltanto dietro presentazione di modulo (piuttosto che immediatamente dopo il carattere digitato)La convalida dell'annotazione dei dati e-mail funziona ma Telefono non è
Nel modello:
[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; }
Dal punto di vista credo di essere inclusi i corretti riferimenti a script:
<script type="text/javascript" src="~/Scripts/jquery.validate.min.js" ></script
<script type="text/javascript" src="~/Scripts/jquery.validate.unobtrusive.min.js" ></script>
..e utilizzando aiutanti html (sto usando TextBoxFor piuttosto che EditorFor come sto applicando attributi di classe che ho omesso qui per chiarezza)
@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" })
Cosa mi manca?
Forse sarebbe meglio chiedere all'OP (utilizzando un commento) quale tipo di telefono viene utilizzato; potrebbe essere un tipo supportato, nel qual caso questa non è la risposta ... – einpoklum
@OzAnt - stai dicendo che invece di type = "phone" dovrei usare new type = "tel" ?? –
@LiamWeston - Non esattamente: w3schools dice che HTML5 definisce un tipo di ingresso telefonico con tipo = tel, non telefono, MA questo tipo non è supportato da nessun browser (come suppongo che i numeri di telefono siano diversi in ogni paese). Quindi potrebbe essere meglio convalidare il tuo numero di telefono con la tua regex nel tuo modello e applicarlo al lato client. Sembra che sia più un suggerimento dato che l'iPhone riconosce type = "tel" e cambia completamente la tastiera sulla tastiera del telefono standard vedi [link] http://html5doctor.com/html5-forms-input-types/#input -tel – OzAnt