Système de validation en jquery
Bonjour !
Dans ce tutoriel je vais vous montrer comment réaliser un système de validation de formulaire avec la lib jquery (c'est une lib extrêmement utile en javascript).
C'est partie !
Introduction
On va se mettre dans un cas concret : vous réalisez en ce moment un site web, et vous aimeriez avoir dans votre inscription un système qui valide automatiquement un champ.
Exemple : je tape un format d'email incorrect, une erreur apparaît à côter de ce champs pour me dire que j'ai fait une erreur dans le champ email.
C'est en javascript que l'on peut réaliser ce système; on va utiliser la lib jquery qui permet d'écrire moins de code et de faciliter le développement
Tout au long de ce tutoriel, nous allons utiliser ces méthodes (ou fonctions) :
- keyup() : permet de déclencher une action lorsque l'utilisateur entre un caractère dans le champs
- val() : permet de retourner la chaîne de caractère contenue dans un champ
- length() : retourne la longueur d'une chaîne de caractère
- match() : permet d'exécuter des regex
- text() : permet de modifier le contenu entre 2 balises
- css() : permet de modifier une propriété css
- inscription.html : Code : html4strict
- <!Doctype html>
- <html lang="fr">
- <head>
- <meta charset="utf-8">
- <title>Système de validation en Jquery</title>
- </head>
- <body>
- <form method="post" action="#">
- <input type="text" name="pseudo" id="pseudo" placeholder="Pseudo"><span class="error_pseudo"></span><br>
- <input type="password" name="mdp" id="mdp" placeholder="Mot de passe"><span class="error_mdp"></span><br>
- <input type="password" name="conf_mdp" id="conf_mdp" placeholder="Confirmation du mot de passe"><span class="error_conf_mdp"></span><br>
- <input type="email" name="email" id="email" placeholder="Email"><span class="error_email"></span><br>
- <input type="submit value="Envoyer">
- </form>
- <script src="http://code.jquery.com/jquery.js"></script>
- <script src="validation.js"></script>
- </body>
- </html>
J'utilise dans ce fichier un CDN (Content Delivery Network) qui inclue la lib jquery depuis le site de jquery. Mais vous pouvez toujours installer jquery et le mettre en local sur votre machine.
- validation.js : Code : javascript
- $(function() {
- //Placé ici le code jquery
- });
Validation du pseudo
Nous voici à la sous-partie "Validation du pseudo" !
La question qu'on se pose c'est : qu'a-t-on besoin de vérifier sur le pseudo ?
On va vérifier :
- Que le pseudo contient au minimum 3 caractères
- Que le pseudo ne dépasse pas 16 caractères
- Que le champ du pseudo contient quelque chose
$('#pseudo').keyup(function() { //On place ici les instructions pour vérifier le pseudo });
Que fait la ligne 1 ?
Elle va exécuter les instructions entre les accolades à l'aide de la méthode keyup, c'est-à-dire que quand le visiteur va entrer son premier caractère dans le champ, les instructions entre accolade vont être exécutée.
On va maintenant vérifier que le pseudo ne dépasse pas 3 caractères à l'aide la méthode val et lengh, qui je le rappelle, nous renvoie le nombre de caractères de la chaîne demandée. Nous allons aussi utiliser les méthodes text et css qui vont être très utile vous allez savoir pourquoi :
if($('#pseudo').val().length < 3) { $('.error_pseudo').text('Le pseudo doit faire au minimum 3 caractères'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); }
Détaillons ce code :
- Ligne 1 : facile, la condition pourrait se traduire par : si le pseudo est plus petit que 3 caractères, alors exécute les instructions entre accolade.
- Ligne 2 : On change le contenu du span dont l'attribut class vaut "error_pseudo", et on affiche le message d'erreur.
- Ligne 3 : la méthode css modifie la couleur de bordure du champs pseudo en rouge car le visiteur à fait une erreur.
- Ligne 4 : encore notre méthode css qui modifie la couleur du texte en rouge.
Vous voyez; pas très difficile. Observons maintenant le code qui va nous permettre de vérifier que le pseudo ne dépasse pas 16 caractères :
if($('#pseudo').val().length > 16) { $('.error_pseudo').text('Le pseudo ne doit pas dépasser 16 caractères'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); }
Je n'ai pas besoin d'expliquer ce code, avec l'explication du précédent, vous êtes parfaitement capables de comprendre celui-ci.
Passons maintenant à la vérification pour savoir si le champs contient quelque chose, pareil avec l'aide la méthode length :
if($('#pseudo').val().length > 0) { $('.error_pseudo').text('Le pseudo doit contenir quelque chose'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); }
Ici aussi, pas besoin d'explication.
Maintenant, nous avons un petit problème, lorsque nous respectons les vérification, le message d'erreur est toujours là, et la bordure et le texte reste toujours rouge. Logique, puisqu'on a pas demandé de les enlever, regarder ce code :
if($('#pseudo').val().length >= 3 && $('#pseudo').val().length <= 16 && $('#pseudo').val().length) { $('.error_pseudo').text(''); $('#pseudo').css('border-color','green'); $('#pseudo').css('color','green'); }
Ce code va faire toute les vérification pour savoir si le pseudo ne dépasse pas 16 caractères et comporte au minimum 3 caractères, je n'ai pas mis s'il était différent de 0 car supérieur ou égal à 3 est amplement suffisant.
Pour ce qui n'ont pas suivie, je récapitule le code du fichier javascript (donc du fichier validation.js) :
$(function() { $('#pseudo').keyup(function() { if($('#pseudo').val().length < 3) { $('.error_pseudo').text('Le pseudo doit faire au minimum 3 caractères'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); } if($('#pseudo').val().length > 16) { $('.error_pseudo').text('Le pseudo ne doit pas dépasser 16 caractères'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); } if($('#pseudo').val().length > 0) { $('.error_pseudo').text('Le pseudo doit contenir quelque chose'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); } if($('#pseudo').val().length >= 3 && $('#pseudo').val().length <= 16 && $('#pseudo').val().length) { $('.error_pseudo').text(''); $('#pseudo').css('border-color','green'); $('#pseudo').css('color','green'); } }); });
Validation du mot de passe
Nous voici à la validation du mot de passe.
Nous allons procéder comme la sous-partie précédente, on va se poser la question : qu'a t-on à vérifier sur le mot de passe ?
On va vérifier :
- Que le mot de passe fait au minimum 6 caractères
- Que le mot de passe contient quelque chose
Voici le début du code de vérification du mot de passe :
$('#mdp').keyup(function() { //Ici les instructions pour faire les vérifications du mot de passe });
Je pense que vous avez compris ce code.
Passons à la première vérification du mot de passe (qu'il comporte au moins 4 caractères) :
if($('#mdp').val().length < 4){ $('.error_mdp').text('Le mot de passe doit faire au minimum 4 caractères'); $('#mdp').css('border-color','red'); $('#mdp').css('color','red'); }
Pareil que le pseudo, nous utilisons les méthodes val et length pour vérifier qu'il ne fait pas moins que 4 caractères, et les méthodes text et css pour indiquer l'erreur.
Ensuite, la vérification pour voir si le champ contient au moins quelque chose :
if($('#mdp').val().length == 0){ $('.error_mdp').text('Le mot de passe doit contenir quelque chose'); $('#mdp').css('border-color','red'); $('#mdp').css('color','red'); }
Nous avons maintenant le même problème que le pseudo : même après avoir respecter les vérifications, on a toujours un message d'erreur, pour cela il suffit d'ajouter ce code :
if($('#mdp').val().length >= 4){ $('.error_mdp').text(''); $('#mdp').css('border-color','green'); $('#mdp').css('color','green'); }
Je n'ai pas mis la vérification pour savoir si le mot de passe contient quelque chose pour la même raison que le pseudo.
Récapitulatif pour les dormeurs :
$(function() { $('#pseudo').keyup(function() { if($('#pseudo').val().length < 3) { $('.error_pseudo').text('Le pseudo doit faire au minimum 3 caractères'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); } if($('#pseudo').val().length > 16) { $('.error_pseudo').text('Le pseudo ne doit pas dépasser 16 caractères'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); } if($('#pseudo').val().length > 0) { $('.error_pseudo').text('Le pseudo doit contenir quelque chose'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); } if($('#pseudo').val().length >= 3 && $('#pseudo').val().length <= 16 && $('#pseudo').val().length) { $('.error_pseudo').text(''); $('#pseudo').css('border-color','green'); $('#pseudo').css('color','green'); } }); $('#mdp').keyup(function() { if($('#mdp').val().length < 4){ $('.error_mdp').text('Le mot de passe doit faire au minimum 4 caractères'); $('#mdp').css('border-color','red'); $('#mdp').css('color','red'); } if($('#mdp').val().length == 0){ $('.error_mdp').text('Le mot de passe doit contenir quelque chose'); $('#mdp').css('border-color','red'); $('#mdp').css('color','red'); } if($('#mdp').val().length >= 4){ $('.error_mdp').text(''); $('#mdp').css('border-color','green'); $('#mdp').css('color','green'); } }); });
Il ne nous reste plus que la confirmation du mot de passe, voici comment faire :
$('#conf_mdp').keyup(function() { if($('#conf_mdp').val()!=$('#mdp').val()){ $('.error_conf_mdp').text('Les deux mots de passe sont différents'); $('#conf_mdp').css('border-color','red'); $('#conf_mdp').css('color','red'); } if($('#conf_mdp').val()==$('#mdp').val()){ $('.error_conf_mdp').text(''); $('#conf_mdp').css('border-color','green'); $('#conf_mdp').css('color','green'); } });
J'ai mis tout le code du champ pour aller plus vite.
Tout d'abord, à la ligne 2 on vérifie si les deux chaînes de caractères sont différentes, si elles le sont, les instructions entre les accolade de la condition s'exécutent.
La deuxième condition sert à palier le fait que les erreurs puissent rester affichées.
Deuxième récapitulatif de la sous-partie :
$(function() { $('#pseudo').keyup(function() { if($('#pseudo').val().length < 3) { $('.error_pseudo').text('Le pseudo doit faire au minimum 3 caractères'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); } if($('#pseudo').val().length > 16) { $('.error_pseudo').text('Le pseudo ne doit pas dépasser 16 caractères'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); } if($('#pseudo').val().length > 0) { $('.error_pseudo').text('Le pseudo doit contenir quelque chose'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); } if($('#pseudo').val().length >= 3 && $('#pseudo').val().length <= 16 && $('#pseudo').val().length) { $('.error_pseudo').text(''); $('#pseudo').css('border-color','green'); $('#pseudo').css('color','green'); } }); $('#mdp').keyup(function() { if($('#mdp').val().length < 4){ $('.error_mdp').text('Le mot de passe doit faire au minimum 4 caractères'); $('#mdp').css('border-color','red'); $('#mdp').css('color','red'); } if($('#mdp').val().length == 0){ $('.error_mdp').text('Le mot de passe doit contenir quelque chose'); $('#mdp').css('border-color','red'); $('#mdp').css('color','red'); } if($('#mdp').val().length >= 4){ $('.error_mdp').text(''); $('#mdp').css('border-color','green'); $('#mdp').css('color','green'); } }); $('#conf_mdp').keyup(function() { if($('#conf_mdp').val()!=$('#mdp').val()){ $('.error_conf_mdp').text('Les deux mots de passe sont différents'); $('#conf_mdp').css('border-color','red'); $('#conf_mdp').css('color','red'); } if($('#conf_mdp').val()==$('#mdp').val()){ $('.error_conf_mdp').text(''); $('#conf_mdp').css('border-color','green'); $('#conf_mdp').css('color','green'); } }); $('#conf_mdp').keyup(function() { if($('#conf_mdp').val()!=$('#mdp').val()){ $('.error_conf_mdp').text('Les deux mots de passe sont différents'); $('#conf_mdp').css('border-color','red'); $('#conf_mdp').css('color','red'); } if($('#conf_mdp').val()==$('#mdp').val()){ $('.error_conf_mdp').text(''); $('#conf_mdp').css('border-color','green'); $('#conf_mdp').css('color','green'); } }); });
Validation de l'email
Nous voici à la dernière partie de ce tutoriel où l'on va réaliser les vérifications sur l'email.
Qu'a t'on à vérifier sur le champ d'email ?
- Que l'email à un format correct
- Que l'email contient quelque chose
Pour vérifier que l'email à un format correct, nous allons utiliser les regex à l'aide de la méthode match(), voici donc le code :
if(!$('#email').val().match('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$')){ $('.error_email').text('L\'email n\'a pas un format correct'); $('#email').css('border-color','red'); $('#email').css('color','red'); }
Première ligne, la condition se traduit par : "Si l'email n'a pas le format de la regex, alors exécute les instructions entre accolade".
Ensuite, nous avons le problème de toujours, l'erreur est toujours affichée, voici comment y remédier :
if($('#email').val().match('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$')){ $('.error_email').text(''); $('#email').css('border-color','green'); $('#email').css('color','green'); }
Il n'y a pas de gros changement à part que le point d'exclamation dans la condition est enlevé. Récapitulatif de tout le code javascript :
$(function() { $('#pseudo').keyup(function() { if($('#pseudo').val().length < 3) { $('.error_pseudo').text('Le pseudo doit faire au minimum 3 caractères'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); } if($('#pseudo').val().length > 16) { $('.error_pseudo').text('Le pseudo ne doit pas dépasser 16 caractères'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); } if($('#pseudo').val().length > 0) { $('.error_pseudo').text('Le pseudo doit contenir quelque chose'); $('#pseudo').css('border-color','red'); $('#pseudo').css('color','red'); } if($('#pseudo').val().length >= 3 && $('#pseudo').val().length <= 16 && $('#pseudo').val().length) { $('.error_pseudo').text(''); $('#pseudo').css('border-color','green'); $('#pseudo').css('color','green'); } }); $('#mdp').keyup(function() { if($('#mdp').val().length < 4){ $('.error_mdp').text('Le mot de passe doit faire au minimum 4 caractères'); $('#mdp').css('border-color','red'); $('#mdp').css('color','red'); } if($('#mdp').val().length == 0){ $('.error_mdp').text('Le mot de passe doit contenir quelque chose'); $('#mdp').css('border-color','red'); $('#mdp').css('color','red'); } if($('#mdp').val().length >= 4){ $('.error_mdp').text(''); $('#mdp').css('border-color','green'); $('#mdp').css('color','green'); } }); $('#conf_mdp').keyup(function() { if($('#conf_mdp').val()!=$('#mdp').val()){ $('.error_conf_mdp').text('Les deux mots de passe sont différents'); $('#conf_mdp').css('border-color','red'); $('#conf_mdp').css('color','red'); } if($('#conf_mdp').val()==$('#mdp').val()){ $('.error_conf_mdp').text(''); $('#conf_mdp').css('border-color','green'); $('#conf_mdp').css('color','green'); } }); $('#conf_mdp').keyup(function() { if($('#conf_mdp').val()!=$('#mdp').val()){ $('.error_conf_mdp').text('Les deux mots de passe sont différents'); $('#conf_mdp').css('border-color','red'); $('#conf_mdp').css('color','red'); } if($('#conf_mdp').val()==$('#mdp').val()){ $('.error_conf_mdp').text(''); $('#conf_mdp').css('border-color','green'); $('#conf_mdp').css('color','green'); } }); $('#email').keyup(function() { if(!$('#email').val().match('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$')){ $('.error_email').text('L\'email n\'a pas un format correct'); $('#email').css('border-color','red'); $('#email').css('color','red'); } if($('#email').val().match('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$')){ $('.error_email').text(''); $('#email').css('border-color','green'); $('#email').css('color','green'); } }); });
Améliorations
Voici la sous-partie bonus !
On a maintenant fini le formulaire avec une validation réaliser en Jquery. Mais on peut tout de même, améliorer ce formulaire qui reste au fond extrêmement simple et basique.
Je vais lister les améliorations qui me passent par la tête, les voici :
- Effet : faîtes un effet lors de l'affichage d'un erreur à l'aide de la méthode Jquery show, et faîtes aussi un effet lorsque l'erreur se cache, à l'aide de la méthode hide.
- Un détecteur de sensibilité du mot de passe.
- Traquez les emails jetables en modifiant la regex pour lors de la vérification de l'adresse email !
- Si vous avez une base de données (je dis bien si), vérifier si le pseudo est disponible à l'aide de l'ajax !
Voilà ce qui devrait vous occupez pendant un petit moment !
Vous pouvez bien sûr inventer des améliorations ! Utiliser votre côté créatif !
Au boulot !
Vous savez maintenant réaliser un système de validation de formulaire en jquery !
J'espère que ce tutoriel vous a plu !
A bientôt !
| Pseudo | Commentaires |
|---|---|
| posté le 05/10/2012 à 10h02 | |
|
Merci pour le partage, mais c'est pas possible de gérer ça en natif en HTML5 ? |
|
| posté le 06/10/2012 à 09h51 | |
|
Qwerty : si mais c'est mon efficace et surtout moins classe |
|
| posté le 10/10/2012 à 16h06 | |
|
Tu as ta réponse qwerty. |
|
| Pseudo | Commentaires |






