Home » jQuery » Valider ses formulaires avec jquery validate
Valider ses formulaires avec jquery validate
Comment valider ses formulaires avec jquery validate ?
Dans ce tuto on va voir comment on peut valider un formulaire html/css en un temps record, grâce au plugin jquery-validate.js. Il en existe beaucoup d’autres, comme validate.js, et il est également possible de le faire en javascript natif, comme le montre le site W3shools.
Comment faire dans le cas d’un formulaire avec vérification et envoi en ajax/ php ?
Si vous partez d’un formulaire classique en php, avec une validation en ajax, voici une piste pour faire fonctionner les deux ensembles. Ici je me base sur l’exemple fourni par le site tutsplus. L’idée est d’afficher un formulaire avec un message de succès caché. A la soumission du formulaire on cache ce dernier et on affiche le message.
La vérification des données en php
Voici le code à insérer dans un fichier php à part, qu’on va appeler form-process.php. Le code est appliqué au formulaire donné en exemple.
<?php $errorMSG = "";
// NAME if (empty($_POST["name"])) { $errorMSG = "Veuillez indiquer votre Nom et Prénom"; } else { $name = $_POST["name"]; }
// redirection vers le message de validation if ($success && $errorMSG == ""){ echo "success"; }else{ if($errorMSG == ""){ echo "Something went wrong :("; } else { echo $errorMSG; } }
?>
Les fonctions js de vérification
Si l’on suit le tutoriel de Tutsplus, voici le fichier js dépouillé, sans l’utilisation de bootstrap validator et tout le reste.
$("#contact").submit(function(event){
event.preventDefault(); submitForm(); }); function formSuccess(){ // ici des évènements qui s'actionnent lors de l'envoi du formulaire, typiquement, je cache le formulaire et le bouton d'envoi, et insère un message de validation à la place
} function submitForm(){ var name = $("#name").val(); var email = $("#email").val(); var tel = $("#tel").val(); var entreprise = $("#entreprise").val(); var message = $("#message").val();
Puisqu’on se retrouve avec deux fonctions d’envoi, celle en ajax et celle du plugin jquery.validate.js, il va falloir mixer le tout : voici donc la version finalisée du fichier js. Les lignes sont commentées pour une meilleure compréhension.
function formSuccess(){ // voici la fonction "formSuccess" : en cas de soumission du formulaire, une fois les conditions passées, on envoie le formulaire et on affiche à la place du formulaire la div cachée contenant le message de succès. $("#contact").hide().html("#msgSubmit"); $( "#msgSubmit" ).removeClass( "hidden" ); }
$(function() {
$("form[name='contact']").validate({ rules: { // Chque input a un attribut "name" que l'on reprend ici pour la vérification nom: "required", prenom: "required", tel:{ required: true, number: true }, email: { required: true, // ono applique ici les règles d'email définies par le plugin email: true }, message:"required" }, // On définit ici les messages d'erreur propre à chaque champ messages: { nom: "veuillez insérer votre nom", prenom: "veuillez insérer votre prénom", entreprise:"veuillez indiquer une entreprise", tel: 'veuillez insérer un numéro de téléphone', email: "veuillez insérer une adresse mail valide", message:"veuillez remplir ce champ" }, submitHandler: function(form) { //la fonction ajax insérée dans le submitHandler de jquery.validate var name = $("#name").val(); var email = $("#email").val(); var tel = $("#tel").val(); var entreprise = $("#entreprise").val(); var message = $("#message").val();
$.ajax({ type: "POST", url: "form-process.php", // on envoie le tout dans la moulinette php du fichier form-process.php pour l'envoi du message data: "name=" + name + "&email=" + email +"&tel=" + tel + "&entreprise=" + entreprise + "&message=" + message, success : function(text){ if (text == "success"){ //si c'est ok, applique la fonction formSuccess formSuccess(); } } }); } }); });
Avec ca, vous devriez donc avoir la vérification html5, celle du js côté client, et la vérification php côté serveur !