Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/09/2014, 12:14
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: como valido textbox y combobox dinamicos con javascript

Si la cantidad de checkbox será fija, no veo necesidad de crear de manera dinámica a los textbox y combos, basta con que siempre estén ahí, los ocultes desde la hoja de estilos y cuando marques a alguno de los checkbox, muestres al textbox y combo que le corresponda. Luego, cuando vayas a validar que todos los campos de texto de los checkbox marcados no estén vacíos, tomas a los checkbox marcados, creando así un conjunto de elementos sobre el cual puedes iterar con una estructura repetitiva. En cada iteración, tomas al campo de texto que le corresponda al checkbox actual en la iteración y verificas la extensión de su contenido, si esta es falsa o igual a cero (0 equivale a false), muestras un mensaje de alerta, le das el enfoque al campo de texto en cuestión y sales del bucle.

Código HTML:
Ver original
  1. <form action = "ejemplo.php" onsubmit = "return validacion()">
  2.     <div>
  3.         Opción 1: <input type = "checkbox" id = "1" onclick = "fn(this)" />
  4.         <input type = "text" id = "txt1" />
  5.         <select id = "cmb1">
  6.             <option value = "foo">Foo</option>
  7.             <option value = "bar">Bar</option>
  8.         </select>
  9.     </div>
  10.     <div>
  11.         Opción 2: <input type = "checkbox" id = "2" onclick = "fn(this)" />
  12.         <input type = "text" id = "txt2" />
  13.         <select id = "cmb2">
  14.             <option value = "foo">Foo</option>
  15.             <option value = "bar">Bar</option>
  16.         </select>
  17.     </div>
  18.     <div>
  19.         Opción 3: <input type = "checkbox" id = "3" onclick = "fn(this)" />
  20.         <input type = "text" id = "txt3" />
  21.         <select id = "cmb3">
  22.             <option value = "foo">Foo</option>
  23.             <option value = "bar">Bar</option>
  24.         </select>
  25.     </div>
  26.     <input type = "submit" />
  27. </form>

Código CSS:
Ver original
  1. [id^=txt], [id^=cmb]{
  2.     display: none;
  3. }

Código Javascript:
Ver original
  1. function fn(elem){
  2.     var textbox = document.querySelector("#txt" + elem.id),
  3.         select = document.querySelector("#cmb" + elem.id);
  4.     if (elem.checked){
  5.         textbox.style.display = "block";
  6.         select.style.display = "block";
  7.     }
  8.     else{
  9.         textbox.style.display = "none";
  10.         select.style.display = "none";
  11.     }
  12. }
  13.  
  14. function validacion(){
  15.     var checkbox = document.querySelectorAll("[type=checkbox]:checked"),
  16.         total = checkbox.length;
  17.     for (var i = 0; i < total; i++){
  18.         var textbox = document.querySelector("#txt" + checkbox[i].id);
  19.         if (!textbox.value.length){
  20.             alert("Tienes que ingresar datos en este campo");
  21.             textbox.focus();
  22.             return false;
  23.         }
  24.     }
  25.     return true;
  26. }

La función termina retornando el valor true o false, según sea el caso. Si se haya a algún campo de texto vacío, se retorna false, con lo cual paramos al bucle y no enviamos la información del formulario, pero si todos los campos de los checkbox marcados contienen datos, se retorna true y se envía la información del formulario.

Saludos
__________________
«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