Tengo un formulario con inputs en php para insertar datos, y un codigo JavaScript para ocultar y mostrar diferentes capas (que contienen mas inputs) a traves de links y checkboxes. Por ejemplo, el check "Incluye contactos" hace mostrar y ocultar la capa que contiene los inputs de los datos sobre contactos.
Hasta el momento me funciona bien en todas las paginas que lo he puesto, y todas tienen, mas o menos la misma estructura. Luego, en el momento de recibir los datos de los inputs en otra pagina, lo hace todo correcto: si se ha mostrado una capa, luego manda lo inputs que contiene, y si no, pues no. Esta es la esctructura y el codigo que uso para mostrar y ocultar.
Código PHP:
<script language="JavaScript">
//define capa sensible a ser ocultada, y la relaciona con su checkbox
function i_div(nombre, nombrecapa, nombrecheck){
document.capa[nombre]= new Array(4);
document.capa[nombre]["nombrecapa"]=nombrecapa;
document.capa[nombre]["nombrecheck"]=nombrecheck;
document.capa[nombre]["veo"]=true;
document.capa[nombre]["h"]="";
//alert(document.capa[nombre]["nombrecapa"]);
}
//muestra u oculta capa
function t_div(nombre, init) {
var d = document.getElementById(document.capa[nombre]["nombrecapa"]);
var e = document.getElementById(document.capa[nombre]["nombrecheck"]);
var veo = document.capa[nombre]["veo"];
var flag = e.checked;
var mostrar=false; esconder=false;
if(!veo && flag)
mostrar = true;
else if(veo && !flag)
esconder = true;
var h = document.capa[nombre]["h"];
if(init || esconder) {
h = d.innerHTML;
d.innerHTML = "";
} else if(mostrar) {
flag = true;
d.innerHTML = h;
}
if(init)
document.capa[nombre]["veo"] = false;
else
document.capa[nombre]["veo"] = flag;
document.capa[nombre]["h"] = h;
}
i_div("contactos", "div_contactos", "es_contactos");
</script>
<form>
<div id="formulario">
<table >
<tr >
<td >
campos
campos
y mas campos
</td>
</tr>
<tr >
<td >
checks para mostrar y ocultar capas
<input id="es_contactos" type="checkbox" onChange="javascript:t_div('contactos', false);>
</td>
</tr>
</table>
</div>
capas a ocultar
<div id="div_contactos">
<div>
<table>
<tr >
<td >
y mas y mas campos
</td>
</tr>
</table>
</div>
</div>
<input type="submit" name="submit" value="Aceptar" class="area">
</form>
<script language="javascript">
// Inicializamos los DIVs ocultables
t_div('contactos', true);
t_div('contactos', false);
<script>
He intentado colocar el codigo en otra estructura, y me esta dando problemas. Ahora, si utilizo el codigo JavaScript para mostrar y ocultar capa, luego el form no manda los inputs de la capa correspondiente, aunque este visible.
Sin embargo, si hago que la capa este visible desde un principio sin que salte nada de JavaScript, los datos se envian bien. Por eso creo que JavaScript tiene algo que ver con el problema, pero no estoy nada seguro... Utilizo el mismo codigo JavaScript con todas las paginas.
Tambien sospecho que puede ser por la esctructura, por eso os pongo mas abajo la estructura de la pagina en la que me da fallos, pero vamos, que no lo tengo nada claro... no entiendo porque pasa!
Código PHP:
<script language="JavaScript">
i_div("contactos", "div_contactos", "es_contactos");
</script>
<div id="uno">
<div id="dos">
<table >
<form >
<tr>
<td>
campos campos campos
</td>
</tr>
<tr>
<td>
<input id="es_contactos" type="checkbox" onChange="javascript:t_div('contactos', false);" >
</td>
</tr>
<tr><td colspan="2" height="15"></td></tr>
<tr>
<td>
<BUTTON TYPE="button" onclick="document.clientes.submit();" style="cursor:hand">
<table>
<tr>
<td>guardar datos</td>
</tr>
</table>
</BUTTON>
</td>
</tr>
</table>
</div>
</div>
<div id="div_contactos">
<table >
<tr >
<td >
campos contactos
</td>
</tr>
</table>
</div>
</form>
<script language="javascript">
// Inicializamos los DIVs ocultables
t_div('contactos', true);
t_div('contactos', false);
</script>
Alguien me puede ayudar?? muchas gracias