Tengo un selector desplegable, con valores de 1-4. Dependiendo de la selección, las entradas subsiguientes en el formulario se ocultan y la validación requerida se elimina de cada una. por ejemplo, si se selecciona 2, se muestran las entradas 1-2 y se agrega la validación requerida, mientras que 3-4 están ocultas y se elimina la validación.Validación Jquery: agregar/eliminar reglas dinámicamente en función de la selección desplegable
$("#dropdownSelector").change(function() {
inputtohide = $(this).val();
$('input[id*=conviction]').slice(0, inputtohide).show().rules("add", {required: "#convictions_0:checked" });
$('input[id*=conviction]').slice(inputtohide, 4).hide().rules("remove", {required: "#convictions_0:checked" });
$("#thisform").validate();
});
Esto funciona bien, sin embargo (como la documentación de los estados de validación de plug-in) validación sólo se añade para el elemento primera devuelto.
que entiendo de otros mensajes, que el siguiente código de validación debe añadir a cada entrada: -
$("#thisform").validate();
$("input[id*=conviction]").each(function() {
$(this).rules("add", {required: "#convictions_0:checked" });
});
Mi pregunta es ¿cómo combino los dos bits de código? Cualquier ayuda muy apreciada, gracias.
Gracias @FreekOne, fue una gran ayuda. Agregó las reglas correctamente, pero show/hide dejó de funcionar correctamente. Lo cambié un poco y funciona ahora - gracias: - 'code' $ ('input [id * = conviction]'). Slice (0, inputtohide) .show(). Each (function() {$ (this) .rules ("add", {required: "# convictions_0: checked"});}); $ ('input [id * = conviction]'). slice (inputtohide, 4) .hide(). each (function() {$ (this) .rules ("remove", {required: "# convictions_0: checked") });}); 'código' – naturelab
@naturelab No estoy seguro de por qué el' show'/'hide' dejará de funcionar porque el código es correcto, pero me alegro de poder ayudarlo. –