Parsley JS Ajouter une classe d'erreur / réussite aux parents

J'utilise Parsley JS ( http://parsleyjs.org/ ) pour la validation du formulaire. Le comportement par défaut des erreurs consiste à ajouter une classe d' parsley-error de parsley-error à chaque entrée non valide. Cependant, j'aimerais modifier le comportement par défaut et ajouter la classe d'erreur au parent de l'entrée – spécifiquement sur l'élément du form-group .

Le HTML de base

 <form class="js-contact-form"> <!-- this field is just required, it would be validated on form submit --> <div class="form-group"> <label for="fullname">Full Name * :</label> <input type="text" class="form-control" name="fullname" placeholder="Name" required /> </div> <!-- this required field must be an email, and validation will be run on field change --> <div class="form-group"> <label for="email">Email * :</label> <input type="email" class="form-control" name="email" data-parsley-trigger="change" /> </div> <input type="submit" /> </form> 

J'utilise la "Installation Javascript" pour initialiser tout et j'ai essayé de remplacer les options "errorClass" et "successClass" par ma propre fonction, mais ne semble pas fonctionner.

  $('.js-contact-form').parsley({ trigger: 'change', errorClass: function(){ $(this).parent() .removeClass('has-success') .addClass('has-error has-feedback'); }, successClass: function(){ $(this).parent() .removeClass('has-error') .addClass('has-success has-feedback'); }, errorsWrapper: '<div class="invalid-message"></div>', errorTemplate: '<span></span>', }); 

Je veux finir avec quelque chose comme ça:

 <div class="form-group has-feedback has-error"> <label for="fullname">Full Name * :</label> <input type="text" class="form-control" name="fullname" placeholder="Name" required /> <div class="invalid-message"> <span>This field is required</span> </div> </div> 

Vous devez utiliser classHandler au lieu de errorClass .

Cela devrait fonctionner:

 $(document).ready(function() { $('.js-contact-form').parsley({ trigger: 'change', successClass: "has-success", errorClass: "has-error", classHandler: function (el) { return el.$element.closest('.form-group'); //working }, errorsWrapper: '<div class="invalid-message"></div>', errorTemplate: '<span></span>', }); }); 

Vous pouvez également vérifier cette réponse associée ici sur SO: persil 2.0.3 ne fonctionne pas avec boostrap 3