Je veux créer un script de validation de formulaire jQuery personnalisé pour m'aider à mieux connaître jQuery et ses meilleures pratiques. Mais dès que j'ai commencé, je me suis retrouvé avec plus de questions que de solutions. Je sais qu'il y a le plugin de validation jQuery, et un tas d'autres plugins tiers, mais c'est quelque chose que je voulais créer à partir de zéro.Validation de formulaire jQuery personnalisée - Quelle est la meilleure façon?
Ma première tentative donne quelque chose comme ci-dessous. Cela fonctionne très bien, mais il semble que beaucoup de code pour valider fondamentalement le même type d'entrée déposée tout le long du formulaire.
$(".validation").submit(function(){
if($(".name").val() === ""){
$(".name").addClass("error");
$(".errorMessage").html("<p>Error: Please enter a valid name</p>").slideDown();
return false;
}if($(".address1").val() === ""){
$(".address1").addClass("error");
$(".errorMessage").html("<p>Error: Please enter a valid address</p>").slideDown();
return false;
}if($(".city").val() === ""){
$(".city").addClass("error");
$(".errorMessage").html("<p>Error: Please enter a valid city</p>").slideDown();
return false;
}if($(".state").val() === "0"){
$(".state").addClass("error");
$(".errorMessage").html("<p>Error: Please enter a valid state</p>").slideDown();
return false;
}if($(".zipCode").val() === ""){
$(".zipCode").addClass("error");
$(".errorMessage").html("<p>Error: Please enter a valid zip code</p>").slideDown();
return false;
}if($(".phone").val() === ""){
$(".phone").addClass("error");
$(".errorMessage").html("<p>Error: Please enter a valid phone</p>").slideDown();
return false;
}if($(".email").val() === "" || ! /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test($(".email").val())){
$(".email").addClass("error");
$(".errorMessage").html("<p>Error: Please enter a valid email</p>").slideDown();
return false;
}
});
Ma deuxième tentative a donné quelque chose comme ceci ci-dessous. Cela réduit toutes les instructions if mais avec un événement qui bouillonne, il valide la forme en arrière. Il ajoute également un seul message d'erreur avec à la fois $(".errorMessage").html("There was an error" + " " + name);
. Serait-il possible d'afficher ce message d'erreur pour chaque champ de formulaire vide en même temps plutôt qu'un à la fois? J'ai un CodePen demo de ce travail. Toutes les suggestions sur la technique ou les meilleures pratiques seraient grandes.
$("form").on("submit", function(e){
$("input").each(function(){
var name = $(this).attr("name");
if($(this).val() == ""){
$(".errorMessage").html("There was an error" + " " + name);
e.preventDefault();
}else{
return true;
}
});
});
Merci,
JB
http://docs.jquery.com/Plugins/Validation –
Juste par curiosité ce qui est le point de le "" supplémentaire dans l'erreur? Juste ajouter l'espace dans la première partie ... –
Rick, Merci pour le commentaire. J'aime l'idée d'utiliser append et je sais que dans cet exemple ce n'est pas pertinent mais à des fins de performance, je ne l'ajouterais pas simplement comme si j'améliorais théoriquement les performances. – jcoder