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