Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/02/2008, 04:09
consigna
 
Fecha de Ingreso: enero-2008
Mensajes: 57
Antigüedad: 17 años, 1 mes
Puntos: 0
Validar Formulario con partes ocultas

Hola buenas, resulta que tengo que validar un formulario que posee un checkbox, que si esta seleccionado desplega otra parte del formulario.
El formulario lo escondo metiendolo entre un <div id=capaexpansion>
#capaexpansion{
display:none;
}

y en el evento onclick del checkbox llamo a la funcion javascript

Código PHP:
<script language="JavaScript" type="text/javascript"

function 
expandir_formulario(objeto){

 if (
objeto.checked){ 
    
xDisplay('capaexpansion''block')
 }else{
    
xDisplay('capaexpansion''none')
 }

}
</script> 
Hasta aqui todo me funciona bien, el problema que tengo es que al validar el formulario voy recorriendo todos los elementos del formulario para ver si estan rellenos, pero aunque no tenga el checkbox seleccionado, me dice que tengo que rellenar los campos del formulario escondido. La funcion que tengo para validarlo es
Código PHP:
function Validar_formulario(formulario)//copiamos el contenido de objeto 1 al objeto 2 del formulario, y limpiamos los objetos 1 y 3
{
  
//Defino una variable boleana, si es 0 es false y si es 1 es true
  
var retorno 1;
  var 
elementos formulario.elements.length;

   
//bucle for paso por todos los elementos del formulario
  
for(i=0i<elementosi++){
    
    if(
        
retorno=1;
        break;
    }
       
//si el elemento definido en la array formulario esta vacio...
      
if((formulario.elements[i].style.display!='none')&&formulario.elements[i].value == "")){
       
// cambio de color el fondo a rojo y la letra
        
formulario.elements[i].style.backgroundColor '#ff0000';
        
formulario.elements[i].style.color '#ffffff';
        
//cambio el valor de la variable boleana porque el campo esta vacio
       
retorno 0;
      }else{
        
//si el campo esta relleno de texto le cambio el color a verde
        
formulario.elements[i].style.backgroundColor '#91E148';
      }
    
   }
 
//En esta condicion: Si retorno es 0 "false" no envio el formulario y alerto al usuario
if (retorno == 0){
alert("Algunos campos del formulario estan sin cubrir: \nPor Favor, rellene todos los campos");
return (
false);
}
//En esta condicion: Si retorno es 1 "true" envio el formulario y alerto al usuario conforme el exito
if (retorno == 1){
return (
true);
}

Le paso el objeto this a esta funcion.

Gracias y un saludo