Saltar al contenido

jquery.validate.unobtrusive no funciona con elementos inyectados dinámicos

Solución:

Probé el enfoque de Xhalent, pero desafortunadamente no funcionó para mí. El enfoque de Robin funcionó y no funcionó. Funcionó muy bien para los elementos agregados dinámicamente, pero si intentara usar JQuery para eliminar todos los atributos de validación y los intervalos del DOM, la biblioteca de validación aún intentaría validarlos.

Sin embargo, si elimina los datos de “validación discreta” del formulario además de “validationData”, funcionó como un encanto para agregar y eliminar dinámicamente elementos que desea validar o no validar.

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

Creé una extensión para la biblioteca jquery.validate.unobtrusive que resolvió este problema para mi situación; podría ser de interés.

Applying unobtrusive jquery validation to dynamic content in ASP.Net MVC

De hecho, me gusta mucho la simplicidad de la solución @viggity y @Robins, así que la convertí en un pequeño complemento rápido:

(function ($) {

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

        $.validator.unobtrusive.parse(form);

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

Uso de ejemplo:

$("#DischargeOutcomeNumberOfVisits")
    .attr("data-val-range-min", this.checked ? "1" : "2")
    .updateValidation();
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *