{"id":25509,"date":"2021-06-07T09:36:00","date_gmt":"2021-06-07T06:36:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25509"},"modified":"2021-10-18T02:08:24","modified_gmt":"2021-10-17T23:08:24","slug":"validation-de-formulaire-html-a-l-aide-de-persil","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/validation-de-formulaire-html-a-l-aide-de-persil\/","title":{"rendered":"Validation de formulaire HTML \u00e0 l&rsquo;aide de persil"},"content":{"rendered":"<p>Vous cherchez \u00e0 appliquer des validations sur votre formulaire HTML? Les validations c\u00f4t\u00e9 client sont utiles pour garantir que tous les champs du formulaire sont remplis et dans un format appropri\u00e9. Il aide les utilisateurs \u00e0 corriger imm\u00e9diatement les donn\u00e9es invalides. Vous devriez toujours avoir des validations c\u00f4t\u00e9 client sur les formulaires de votre site Web. Si vous l&rsquo;ignorez et n&rsquo;appliquez que la validation c\u00f4t\u00e9 serveur, cela retarderait la soumission du formulaire en cas d&rsquo;erreur.<\/p>\n<p><a href=\"https:\/\/parsleyjs.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Parsley<\/a> est une biblioth\u00e8que de validation de formulaires utile et facile \u00e0 int\u00e9grer. Cette biblioth\u00e8que offre une meilleure UX par rapport aux validations HTML5 par d\u00e9faut. Vous avez besoin d&rsquo;\u00e9crire quelques d\u00e9clarations et vous avez termin\u00e9. Parsley fournit un riche ensemble d&rsquo;options \u00e0 l&rsquo;aide desquelles vous pouvez \u00e9tendre vos validations personnalis\u00e9es. Je ne vais pas couvrir chaque option. Le but de ce tutoriel est de vous familiariser avec Parsley et de vous montrer comment appliquer les validations de base. On peut explorer leur documentation et se familiariser avec toutes les fonctionnalit\u00e9s fournies par la biblioth\u00e8que.<\/p>\n<p>Pour ce tutoriel, je vais cr\u00e9er un formulaire simple avec quelques champs comme le nom, l&#8217;email, le sexe, etc. Tous les champs du formulaire sont obligatoires et nous appliquerons des validations en utilisant Persil sur notre formulaire.<\/p>\n<p>Afin de valider le formulaire \u00e0 l&rsquo;aide de Parsley, nous devons inclure son fichier JS. Je vais le faire en utilisant CDN.<\/p>\n<p>Parsley recommande d&rsquo;utiliser votre propre style pour les messages d&rsquo;erreur. Mais \u00e0 des fins de test, vous pouvez utiliser leur fichier CSS disponible sur <a href=\"https:\/\/parsleyjs.org\/src\/parsley.css\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ce lien<\/a>.<\/p>\n<h3>Comment utiliser le persil<\/h3>\n<p>\u00c0 des fins de d\u00e9monstration, je vais cr\u00e9er un formulaire \u00e0 l&rsquo;aide de Bootstrap. J&rsquo;inclurai donc Bootstrap en utilisant CDN avec les fichiers Parsley. J&rsquo;inclus \u00e9galement jQuery car le persil en d\u00e9pend.<\/p>\n<pre><code>&lt;link rel=\"stylesheet\" type=\"text\/css\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/twitter-bootstrap\/4.5.3\/css\/bootstrap.min.css\" \/&gt;\n&lt;link rel=\"stylesheet\" type=\"text\/css\" href=\"http:\/\/parsleyjs.org\/src\/parsley.css\" \/&gt;\n&lt;div class=\"container\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;form class=\"form-horizontal\" id=\"signup_form\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"inputFirstName\" class=\"col-sm-2 control-label\"&gt;First Name&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-sm-4\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" class=\"form-control\" id=\"inputFirstName\" name=\"first_name\" placeholder=\"First Name\" required&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"inputLastName\" class=\"col-sm-2 control-label\"&gt;Last Name&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-sm-4\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" class=\"form-control\" id=\"inputLastName\" name=\"last_name\" placeholder=\"Last Name\" required&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"inputEmail3\" class=\"col-sm-2 control-label\"&gt;Email&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-sm-4\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"email\" class=\"form-control\" id=\"inputEmail3\" name=\"email\" placeholder=\"Email\" required&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label class=\"col-sm-2 control-label\"&gt;Gender&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-sm-4\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"gender\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"radio\" name=\"gender\" value=\"male\" required&gt; Male\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"radio\" name=\"gender\" value=\"female\" required&gt; Female\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label class=\"col-sm-2 control-label\"&gt;Skills&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-sm-4\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"skills\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"checkbox\" name=\"skills[]\" value=\"php\" required&gt; PHP\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"checkbox\" name=\"skills[]\" value=\"mysql\" required&gt; MySQL\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-sm-offset-2 col-sm-10\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" class=\"btn btn-primary\"&gt;Sign in&lt;\/button&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/form&gt;\n&lt;\/div&gt;\n\u00a0\n&lt;script type=\"text\/javascript\" src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js\"&gt;&lt;\/script&gt;\n&lt;script type=\"text\/javascript\" src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/twitter-bootstrap\/4.5.3\/js\/bootstrap.min.js\"&gt;&lt;\/script&gt;\n&lt;script type=\"text\/javascript\" src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/parsley.js\/2.9.2\/parsley.min.js\"&gt;&lt;\/script&gt;\n&lt;script type=\"text\/javascript\"&gt;\n\u00a0\u00a0\u00a0\u00a0jQuery('#signup_form').parsley();\n&lt;\/script&gt;<\/code><\/pre>\n<p>Dans le code ci-dessus, j&rsquo;ai inclus tous les fichiers JS et CSS requis \u00e0 l&rsquo;aide de CDN. Enfin, j&rsquo;ai utilis\u00e9 <code>$('#signup_form').parsley();<\/code>o\u00f9 #signup_form est l&rsquo;identifiant du formulaire. Maintenant, lorsque vous appuyez directement sur le bouton Soumettre, les erreurs s&rsquo;affichent, comme indiqu\u00e9 dans la capture d&rsquo;\u00e9cran ci-dessous.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20309-6081dc1dbb937.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20309-6081dc1dbb937.png\" alt=\"Validation de formulaire HTML \u00e0 l&#039;aide de persil\" ><\/a><\/p>\n<p>Une fois toutes les erreurs corrig\u00e9es, Parsley vous permet de soumettre un formulaire que vous utilisez ensuite pour le traitement c\u00f4t\u00e9 serveur.<\/p>\n<p>J&rsquo;esp\u00e8re que vous comprenez la validation de formulaire HTML \u00e0 l&rsquo;aide de Parsley. S&rsquo;il vous pla\u00eet partager vos pens\u00e9es et suggestions dans la section commentaires ci-dessous.<\/p>\n<h3>Articles Li\u00e9s<\/h3>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/deployez-gratuitement-un-site-web-statique-sur-firebase-hosting\/\" title=\"D\u00e9ployez gratuitement un site Web statique sur Firebase Hosting\">D\u00e9ployez gratuitement un site Web statique sur Firebase Hosting<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/obtenez-une-liste-de-videos-youtube-par-mots-cles-a-l-aide-de-l-api-de-recherche-youtube-et-de-javascript\/\" title=\"Obtenez une liste de vid\u00e9os YouTube par mots-cl\u00e9s \u00e0 l&#039;aide de l&#039;API de recherche YouTube et de JavaScript\">Obtenez une liste de vid\u00e9os YouTube par mots-cl\u00e9s \u00e0 l&rsquo;aide de l&rsquo;API de recherche YouTube et de JavaScript<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-connecter-la-base-de-donnees-en-temps-reel-firebase-a-votre-formulaire-de-site-web\/\" title=\"Comment connecter la base de donn\u00e9es en temps r\u00e9el Firebase \u00e0 votre formulaire de site Web\">Comment connecter la base de donn\u00e9es en temps r\u00e9el Firebase \u00e0 votre formulaire de site Web<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>ParsleyJS est une biblioth\u00e8que de validation de formulaire JavaScript open source. Dans cet article, nous \u00e9tudions comment utiliser Parsley pour la validation de formulaire HTML.<\/p>\n","protected":false},"author":1,"featured_media":21644,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[245],"tags":[844],"class_list":["post-25509","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/comments?post=25509"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25509\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/21644"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=25509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=25509"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=25509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}