Hola derkenuke!!!!
Tú código funciona d maravilla, oculta el campo "zona" cuando no debe d mostrarlo. Pero desafortunadamente no pasa el valor del campo "zona" por la URL cuando este campo está oculto.
He "peinado" toda la red en busca d algo parecido pero no ha habido suerte
He probado a poner variables d URL, pero no tiene demasiado sentido pues al hacer un evento "onchange" no pasa nada por la URL hasta q no se ha enviado el formulario. Por ello he incluso buscado la manera d hacer q al apretar el botón se envíe 2 veces (aunque quede muy cutre) para q una vez enviada la primera vez tome el valor d la URL y muestre el campo zona como es debido.
He probado también a poner un campo oculto llamado "zona", para q cuando el campo de igual nombre ("zona") esté oculto pues lo mande igual. Pero así no funciona la función d javascript, al haber una "zona" como campo oculto y otro como menú de lista.
He intentado todo lo q estaba a mi alcance (q desgraciadamente no es mucho
) para hacer q pase el valor del campo zona cuando éste no existe y sea enviado. Pero no sé más
.
he puesto el código tuyo en un ejemplo q funciona (tal y como m pediste ;) por si tuvieses ocasión d mirártelo. Seguro q podrías dar con alguna solución.
Si bien, aunque no contestes, t estaré igualmente enormemente agradecido x todo lo q has hecho ya por mi.
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>
<style type="text/css">
</style>
</head>
<body>
<form name="frm" method="GET" action="/prueba_combobox.php">
<select name="loc" onchange="cambiar(this.form.zona)">
<option value="%%" <?php if (!(strcmp("%%", $_GET['loc']))) {echo "selected=\"selected\"";} ?>>Cualquier ubicación</option>
<option value="Agaete" <?php if (!(strcmp("Agaete", $_GET['loc']))) {echo "selected=\"selected\"";} ?>>Agaete</option>
<option value="Aguimes" <?php if (!(strcmp("Aguimes", $_GET['loc']))) {echo "selected=\"selected\"";} ?>>Aguimes</option>
</select>
<?php if($_GET['loc'] == 'Agaete') { ?>
<select name="zona" style="visibility: visible;">
<option value="%%" <?php if (!(strcmp("%%", $_GET['zona']))) {echo "selected=\"selected\"";} ?>>Cualquier ubicación</option>
<option value="(Puerto de Las Nieves)" <?php if (!(strcmp("(Puerto de Las Nieves)", $_GET['zona']))) {echo "selected=\"selected\"";} ?>>Puerto de Las Nieves</option>
<option value="(Valle de Agaete)" <?php if (!(strcmp("(Valle de Agaete)", $_GET['zona']))) {echo "selected=\"selected\"";} ?>>Valle de Agaete</option>
</select>
<?php } ?>
<?php if($_GET['loc'] == 'Aguimes') { ?>
<select name="zona" style="visibility: visible;">
<option value="%%" <?php if (!(strcmp("%%", $_GET['zona']))) {echo "selected=\"selected\"";} ?>>Cualquier ubicación</option>
<option value="(Villa de Agüimes)" <?php if (!(strcmp("(Villa de Agüimes)", $_GET['zona']))) {echo "selected=\"selected\"";} ?>>Villa de Agüimes</option>
<option value="(Cruce de Arinaga)" <?php if (!(strcmp("(Cruce de Arinaga)", $_GET['zona']))) {echo "selected=\"selected\"";} ?>>Cruce de Arinaga</option>
<option value="(Playa de Arinaga)" <?php if (!(strcmp("(Playa de Arinaga)", $_GET['zona']))) {echo "selected=\"selected\"";} ?>>Playa de Arinaga</option>
<option value="(Polígono industrial de Arinaga)" <?php if (!(strcmp("(Polígono industrial de Arinaga)", $_GET['zona']))) {echo "selected=\"selected\"";} ?>>Polígono industrial de Arinaga</option>
</select>
<?php } ?>
<?php if($_GET['loc'] == '%%') { ?>
<select name="zona" style="visibility: hidden;">
<option value="%%" <?php if (!(strcmp("%%", $_GET['zona']))) {echo "selected=\"selected\"";} ?>></option>
</select>
<?php } ?>
<label></label>
<input type="submit" name="Submit" value="Enviar" />
</form>
<script type="text/javascript">
<!--
function addOpt(oCntrl, iPos, sTxt, sVal){
var selOpcion=new Option(sTxt, sVal);
eval(oCntrl.options[iPos]=selOpcion);
}
function cambiar(oCntrl){
while (oCntrl.length) oCntrl.remove(0);
oCntrl.style.visibility="visible";
switch (document.frm.loc.selectedIndex){
case 0:
addOpt((oCntrl.style.visibility="hidden")== 0, "","%%");
break;
case 1:
addOpt(oCntrl, 0, "Cualquier ubicación", "%%");
addOpt(oCntrl, 1, "Puerto de Las Nieves", "(Puerto de Las Nieves)");
addOpt(oCntrl, 2, "Valle de Agaete", "(Valle de Agaete)");
break;
case 2:
addOpt(oCntrl, 0, "Cualquier ubicación", "%%");
addOpt(oCntrl, 1, "Villa de Agüimes", "(Villa de Agüimes)");
addOpt(oCntrl, 2, "Cruce de Arinaga", "(Cruce de Arinaga)");
addOpt(oCntrl, 3, "Playa de Arinaga", "(Playa de Arinaga)");
addOpt(oCntrl, 4, "Polígono industrial de Arinaga", "(Polígono industrial de Arinaga)");
break;
}
}
// -->
</script>
</body>
</html>
¡Un millón d gracias otra vez; Salu2!!!