Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/01/2016, 13:02
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 3 meses
Puntos: 977
Respuesta: asignar required a inputs cuando se seleccione un checkbox

Cuando se marca o desmarca un checkbox, se produce el evento change. Una manera práctica de hacer lo que buscas consiste en delegar dicho evento a la tabla que contiene a todos los campos; luego, mediante la propiedad event.target, tomarías al elemento en el que se produjo el evento, que en este caso sería cada checkbox y como veo que su name es distinto a los de los campos de texto, solo tendrías que verificar que el nombre del elemento contenga la palabra "pedir". Cuando verifiques esto, solo te queda saber si el checkbox está marcado o desmarcado. Si está marcado, tomas a elemento padre del checkbox, que sería la celda, y de esta a su elemento padre, que sería la fila. En la fila, tomarías a todos los elementos cuyo nombre empiece por "und", recorrerías al conjunto resultante y les asignarías el atributo en cuestión. Si el checkbox está desmarcado, se los quitarías.

Código Javascript:
Ver original
  1. document.querySelector("#id de la tabla").addEventListener("change", function(event){
  2.     if (event.target.name.indexOf("pedir") > -1){
  3.         if (event.target.checked){
  4.             [].forEach.call(event.target.parentNode.parentNode.querySelectorAll("[name^=und]"), function(input){
  5.                 input.required = true;
  6.             });
  7.         }
  8.         else{
  9.             [].forEach.call(event.target.parentNode.parentNode.querySelectorAll("[name^=und]"), function(input){
  10.                 input.required = false;
  11.             });
  12.         }
  13.     }
  14. }, false);

Para futuras consultas:
Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand