Tema: No mostrar
Ver Mensaje Individual
  #11 (permalink)  
Antiguo 22/07/2008, 15:49
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: No mostrar

Hola de nuevo:

Me he dado cuenta que el problema no tiene nada que ver con que esté oculto o mostrado. El problema viene porque el select no tiene ningún hijo <option>, y IE lo ignora al enviarlo. La especificación sí que dice que un select debe contener uno o más hijos <option>, así que habrá que ponérselo por defecto.

Me he dado cuenta de esto al probar el ejemplo: Lo he ajustado al validador, y si se envía sin tocar los select no pasa nada, los envía correctamente; pero si cambiamos el primer select (cambiandose consecuentemente los datos del segundo) y volvemos a la primera opción 'Cualquier ubicación' en el primer select, entonces el select 'zona' queda totalmente vacío, sin <option>, y no se envía por IE.

Simplemente, añadamos un <option> vacío, con el valor que tú quieras. Luego ya el visibility o el display lo podemos controlar como queramos.

Código PHP:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>  
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">  
<
head>  
<
meta http-equiv="Content-type" content="text/html;charset=iso-8859-1" />  
<
meta name="Author" content="derkeNuke" />  
<
title>Página nueva</title>  
</
head>  

<
body>  



<
form action="recibidorGET.php" method="get" name="frm">  
    <
select name="loc" onchange="cambiar(this.form.zona)">  
        <
option>Cualquier ubicación</option>  
        <
option>Agaete</option>  
        <
option>Agüimes</option>  
    </
select>  
    <
select name="zona" style="visibility: hidden">
        <
option></option>
    </
select
    <
input name="Submit" type="submit" value="Enviar" /> 
</
form>  



<
script type="text/javascript">  
<!--  


function 
addOpt(oCntrliPossTxtsVal){  
    var 
selOpcion=new Option(sTxtsVal);  
    eval(
oCntrl.options[iPos]=selOpcion);  
}  
function 
cambiar(oCntrl){  
    while (
oCntrl.lengthoCntrl.remove(0);  
    
oCntrl.style.visibility="visible";  
    switch (
document.frm.loc.selectedIndex){  
        case 
0:  
        
addOpt(oCntrl0""""); 
        
oCntrl.style.visibility="hidden";  
        break;  
        case 
1:  
        
addOpt(oCntrl0"Cualquier ubicación""%%");  
        
addOpt(oCntrl1"Puerto de las Nieves""(Puerto de Las Nieves)");  
        
addOpt(oCntrl2"Valle de Agaete""(Valle de Agaete)");  
        break;  
        case 
2:  
        
addOpt(oCntrl0"Cualquier ubicación""%%");  
        
addOpt(oCntrl1"Villa de Agüimes""(Villa de Agüimes)");  
        
addOpt(oCntrl2"Cruce de Arinaga""(Cruce de Arinaga)");  
        
addOpt(oCntrl3"Playa de Arinaga""(Playa de Arinaga)");  
        
addOpt(oCntrl4"Polígono industrial de Arinaga""(Polígono industrial de Arinaga)");  
        break;  
    }  
}  


// -->  
</script>  


</body>  
</html> 
Probado en IE y en FF, funciona bien y envía todo. Y valida.



Un saludo
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.