Il est dit "Avec HTML5, nous n'avons plus besoin de js ou d'un code côté serveur pour vérifier si l'entrée de l'utilisateur correspond à une adresse électronique ou à une adresse URL valide"
Comment valider un email après la saisie d'un utilisateur? et sans JS, comment afficher un message si l'utilisateur entre un mauvais formulaire de son adresse électronique.
<input type="email" pattern="[^ @]*@[^ @]*" placeholder="Enter your email">
<input type="submit" value="Submit">
En HTML5, vous pouvez faire comme ceci:
<form>
<input type="email" placeholder="Enter your email">
<input type="submit" value="Submit">
</form>
Et lorsque l'utilisateur appuie sur Soumettre, il affiche automatiquement un message d'erreur du type:
La page input type=email
du site www.w3.org indique qu'une adresse électronique est une chaîne quelconque qui correspond à l'expression régulière suivante:
/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
Utilisez l'attribut required
et un attribut pattern
pour exiger que la valeur corresponde au modèle d'expression régulière.
<input
type="text"
pattern="/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/"
required
>
Utilisation de [a-zA-Z0-9.-_]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}
pour [email protected]
/[email protected]
Voici l'exemple que j'utilise pour toutes mes entrées d'e-mail de formulaire. Cet exemple est ASP.NET, mais s'applique à tout:
<asp:TextBox runat="server" class="form-control" placeholder="Contact's email"
name="contact_email" ID="contact_email" title="Contact's email (format: [email protected])"
type="email" TextMode="Email" validate="required:true"
pattern="[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*" >
</asp:TextBox>
HTML5 valide encore l'utilisation du modèle lorsqu'il n'est pas requis. Je n'en ai pas encore trouvé qui était un faux positif.
Cela rend comme le HTML suivant:
<input class="form-control" placeholder="Contact's email"
name="contact_email" id="contact_email" type="email"
title="Contact's email (format: [email protected])"
pattern="[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*">
Je sais que vous n’êtes pas intéressé par la solution Javascript. Toutefois, certaines choses, telles que le message de validation personnalisé, ne peuvent être effectuées, à mon avis, qu’en utilisant JS.
De plus, en utilisant JS, vous pouvez ajouter de manière dynamique la validation à tous les champs de saisie de type email de votre site au lieu de devoir modifier chaque champ de saisie.
var validations ={
email: [/^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/, 'Please enter a valid email address']
};
$(document).ready(function(){
// Check all the input fields of type email. This function will handle all the email addresses validations
$("input[type=email]").change( function(){
// Set the regular expression to validate the email
validation = new RegExp(validations['email'][0]);
// validate the email value against the regular expression
if (!validation.test(this.value)){
// If the validation fails then we show the custom error message
this.setCustomValidity(validations['email'][1]);
return false;
} else {
// This is really important. If the validation is successful you need to reset the custom error message
this.setCustomValidity('');
}
});
})
Il est très difficile de valider correctement la messagerie en utilisant simplement l'attribut HTML5 "pattern". Si vous n'utilisez pas de "motif", quelqu'un @ sera traité. qui n'est pas un email valide.
Utiliser pattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}"
exigera que le format soit [email protected]
; toutefois, si l'expéditeur a un format tel que [email protected]
(ou similaire) ne sera pas validé pour résoudre ce problème, vous pouvez indiquer pattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}"
et valider ".com.au ou .net.au ou similaire.
Cependant, en utilisant cela, cela ne permettra pas à quelqu'[email protected] de valider. Donc, pour autant que simplement utiliser HTML5 pour valider des adresses e-mail n’est pas encore totalement à notre portée. Pour compléter ceci, vous utiliseriez quelque chose comme ceci:
<form>
<input id="email" type="text" name="email" pattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}" required placeholder="Enter you Email">
<br>
<input type="submit" value="Submit The Form">
</form>
ou:
<form>
<input id="email" type="text" name="email" pattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}" required placeholder="Enter you Email">
<br>
<input type="submit" value="Submit The Form">
</form>
Cependant, je ne sais pas comment valider les deux ou toutes les versions d'adresses électroniques à l'aide de l'attribut de modèle HTML5.
Vous pouvez suivre ce modèle aussi
<form action="/action_page.php">
E-mail: <input type="email" name="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$">
<input type="submit">
</form>
Ref: Dans W3Schools
En utilisant HTML 5, il suffit de créer le courrier électronique d'entrée comme suit:
<input type="email"/>
Lorsque l'utilisateur survole la zone de saisie, il affiche une info-bulle lui demandant de saisir un email valide . Cependant, les formulaires Bootstrap ont un message d'info-bulle beaucoup plus précis pour indiquer à l'utilisateur de saisir une adresse e-mail. la valeur entrée ne correspond pas à un email valide.