2

je la propriété suivante dans mon modèle de vue:valident immédiatement les champs de messagerie côté client

[EmailAddress] 
[DataType(DataType.EmailAddress)] 
public string Email { get; set; } 

Et rendre ce en vue de rasoir suivant:

@Html.LabelFor(m => m.Email) 
@Html.EditorFor(m => m.Email) 
@Html.ValidationMessageFor(m => m.Email) 

Cela produit la sortie html suivante (voir type="email", qui est ce que je veux):

<input data-val="true" data-val-email="The Email field is not a valid e-mail address." id="Email" name="Email" type="email" value=""> 

J'ai aussi ClientValidationEnabled et UnobtrusiveJavaScriptEnabled défini sur true. La validation pour requis etc. fonctionne comme prévu. Mais la validation pour ce champ de courrier électronique n'est pas déclenchée immédiatement après avoir changé un caractère dans le champ de saisie ou après avoir mis au point un autre champ de saisie. Tout d'abord, mon navigateur donne le message que ce n'est pas une adresse e-mail valide.

Mais lorsque j'entre [email protected], mon navigateur (Chrome) le détecte comme une adresse e-mail valide, puis le validateur d'e-mail d'ASP.NET MVC indique que ce n'est pas un format valide. Mais le validateur ASP.NET n'est déclenché que lorsque je clique sur le bouton submit (la validation du navigateur n'est déclenchée que sur submit, mais ce n'est pas un problème car je désactiverai la validation du navigateur de toute façon).

Lorsque j'utilise @Html.TextBoxFor() au lieu de @Html.EditorFor() il produit le balisage suivant (avec type="text"):

<input data-val="true" data-val-email="The Email field is not a valid e-mail address." id="Email" name="Email" type="text" value=""> 

Et maintenant, la validation est immédiatement déclenché lors d'un changement tout caractère dans la inputfield ou de se concentrer les uns les autres. Par Je dois avoir le type="email".

Est-il possible de forcer la validation immédiatement également sur des champs de courrier électronique?

Répondre

4

Type = e-mail est le balisage HTML5. Je compare 2 de mes projets où l'autre utilise l'ancien plugin jquery validator et il ne semble pas fonctionner avec le type d'email. Cependant, le nouveau projet utilise le dernier validateur et fonctionne correctement. Essayez de mettre à jour votre plugin jquery validator.

+0

Parfait, merci. J'utilisais 1.8.0. Cela semble être vieux ;-) –

-1
[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Email is not valid.")] 

Essayez cet attribut

+0

Cela ne résout pas le problème. Le problème est le type 'email = pas le validateur lui-même. –

Questions connexes