Skip to content

jquery.validate.unobtrusive ne fonctionne pas avec les éléments injectés dynamiques

Solution:

J’ai essayé l’approche de Xhalent mais malheureusement cela ne fonctionnait pas pour moi. L’approche de Robin a fonctionné et n’a pas fonctionné. Cela fonctionnait très bien pour les éléments ajoutés dynamiquement, mais si vous essayiez d’utiliser JQuery pour supprimer tous les attributs et étendues de validation du DOM, la bibliothèque de validation essaierait toujours de les valider.

Cependant, si vous supprimez les données “unobtrusiveValidation” du formulaire en plus de “validationData”, cela a fonctionné comme un charme pour ajouter et supprimer dynamiquement des éléments que vous souhaitez valider ou non.

$("form").removeData("validator");
$("form").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse("form");

J’ai créé une extension pour la bibliothèque jquery.validate.unobtrusive qui a résolu ce problème pour ma situation – cela pourrait être intéressant.

http://xhalent.wordpress.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/

En fait, j’aime beaucoup la simplicité de la solution @viggity et @Robins, alors je l’ai transformé en un petit plugin rapide :

(function ($) {

    $.fn.updateValidation = function () {
        var $this = $(this);
        var form = $this.closest("form")
            .removeData("validator")
            .removeData("unobtrusiveValidation");

        $.validator.unobtrusive.parse(form);

        return $this;
    };
})(jQuery);

Exemple d’utilisation :

$("#DischargeOutcomeNumberOfVisits")
    .attr("data-val-range-min", this.checked ? "1" : "2")
    .updateValidation();



Articles Similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.