Foros del Web » Programando para Internet » Javascript »

Si hay JavaScript no envia ciertos campos del formulario

Estas en el tema de Si hay JavaScript no envia ciertos campos del formulario en el foro de Javascript en Foros del Web. Que raro lo que me pasa! Tengo un formulario con inputs en php para insertar datos, y un codigo JavaScript para ocultar y mostrar diferentes ...
  #1 (permalink)  
Antiguo 10/08/2006, 09:47
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 19 años
Puntos: 2
Si hay JavaScript no envia ciertos campos del formulario

Que raro lo que me pasa!

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(nombrenombrecapanombrecheck){

        
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(nombreinit) {
        var 
document.getElementById(document.capa[nombre]["nombrecapa"]);
        var 
document.getElementById(document.capa[nombre]["nombrecheck"]);
        var 
veo document.capa[nombre]["veo"];
        var 
flag e.checked;
        var 
mostrar=falseesconder=false;
        if(!
veo && flag)
            
mostrar true;
        else if(
veo && !flag)
            
esconder true;
        var 
document.capa[nombre]["h"];
        if(
init || esconder) {
            
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> 
Insisto, este codigo de arriba funciona bien






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> 
Resumiendo: si dentro de un formulario tengo una capa que contiene inputs, cuando utilizo mi codigo JavaScript para mostrar y ocultar esa capa, esos inputs no se envian con el formulario. Si hago que no salte ese JavaScript, y la capa esta visible, los input se envian correctamente.

Alguien me puede ayudar?? muchas gracias
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:39.