Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/11/2011, 10:48
diego_gr06
 
Fecha de Ingreso: noviembre-2010
Ubicación: españa
Mensajes: 29
Antigüedad: 14 años, 1 mes
Puntos: 0
Dificultad para recargar combos

Hola a todos. A ver. Tengo dos combos dependientes. Uno de provincias y otro de localidades, de tal modo que el código que tengo es el siguiente:

Código PHP:
//mostrar combos
<br><br><b>Provincia</b><br>
    <select name="provinciaList" id="provinciaList" onChange="return provinciaListOnChange()">
    <option >Seleccione la Provincia...</option>
    <option value="" >..............................</option>        
    <?php
    $xml 
simplexml_load_file('provinciasypoblaciones.xml');
    
$result $xml->xpath("/lista/provincia/nombre | /lista/provincia/@id");
    for (
$i=0;$i<count($result);$i+=2
    {
    
$e=$i+1;
    
$provincia=UTF8_DECODE($result[$e]);
    echo(
"<option value='$result[$i]'>$provincia</option>");
    }
    
?>
    </select>
<b>Localidad</b><br>
    <div id="celda_localidad">
    <select name="localidadList" id="localidadList" >
    <option >Seleccione antes una Provincia</option>
    <option value="" >..............................</option>    
    </select> <span id="advice"> </span>
Bien. El archivo provinciasypoblaciones.xml tiene este código (para reducir he puesto solo un par de provincias con un par de poblaciones):

Código PHP:
<?xml version="1.0" encoding="UTF-8"?>
<lista>
    <provincia id="01">
<nombre><![CDATA[Valladolid]]></nombre>
        <localidades>
                <localidad c="0"><![CDATA[Adalia]]></localidad>
            <localidad c="0"><![CDATA[Aguasal]]></localidad>
</localidades>
    </provincia>
        <provincia id="02">
        <nombre><![CDATA[Vizcaya]]></nombre>
        <localidades>
                <localidad c="0"><![CDATA[Abadiño]]></localidad>
            <localidad c="0"><![CDATA[Abadiño-zelaieta]]></localidad>
</localidades>
    </provincia>
    </lista>
Bien. este combo funciona perfectamente. Es decir, cuando en una lista selecciono Valladolid como provincia, automáticamente en la otra se me cargan Adalia y Aguasal como localidades. Lo mismo sucede si cojo Vizcaya por ejemplo. Bien. Lo que yo quiero ahora es rizar aún más el rizo y poner, al lado de las localidades, un enlace que diga algo así como "No encuentras tu localidad en el listado? Click aquí" y al hacer click, el listado, el combo de localidades dependiente de las provincias se transforma en un campo de texto en el que el visitante pueda escribir el nombre de la localidad que quiera. Esto también lo he conseguido mediante este código:

Código PHP:
<br><br><b>Provincia</b><br>
    <select name="provinciaList" id="provinciaList" onChange="return provinciaListOnChange()">
    <option >Seleccione la Provincia...</option>
    <option value="" >..............................</option>        
    <?php
    $xml 
simplexml_load_file('provinciasypoblaciones.xml');
    
$result $xml->xpath("/lista/provincia/nombre | /lista/provincia/@id");
    for (
$i=0;$i<count($result);$i+=2
    {
    
$e=$i+1;
    
$provincia=UTF8_DECODE($result[$e]);
    echo(
"<option value='$result[$i]'>$provincia</option>");
    }
    
?>
    </select>
<b>Localidad</b><br>
    <div id="celda_localidad">
    <select name="localidadList" id="localidadList" >
    <option >Seleccione antes una Provincia</option>
    <option value="" >..............................</option>    
    </select> <span id="advice"> </span> 

<script>
function localidadnueva(){$('inputtextolocalidad').innerHTML='<input type="text" name="localidadtxt" id="localidadtxt" value="" / size="50">';}
</script>
<a href="javascript:localidadnueva()">¿No encuentras tu localidad en el listado? Click aquí</a>
Como podéis comprobar, mediante ese script, al hacer click en el enlace de "¿No encuentras tu localidad en el listado? Click aquí", el compo o lista dependiente de localidades se me convierte en un campo de texto para que el visitante pueda escribir el nombre de la localidad que quiera.

Bien. Como digo, todo esto funciona correctamente. Para rizar más el rizo pensé "¿pero y si el visitante ha clickado en ese enlace por error, cómo volvería a ver otra vez todas las localidades?" y pensé nuevamente en hacerlo con otra función que me volviera a mostrar las localidades o el combo de localidades. Y aquí es donde falla, porque aunque logro mostrar el combo, no logro que se carguen las localidades. Es evidente que el tema está en el churro de función para volver a mostrar las localidades que he hecho pero es que estoy bloqueado y no se me ocurre como plantear la solución. lo que he hecho es poner al lado de ese campo de texto nuevamente el enlace "Volver a mostrar el listado anterior", y cargar una función que logra mostrarme una lista pero que no me carga las localidades. El tema está en como meter mano a esa función para que me cargue las localidades. Lo que yo hago es esto:

Código PHP:
<br><br><b>Provincia</b><br>
    <select name="provinciaList" id="provinciaList" onChange="return provinciaListOnChange()">
    <option >Seleccione la Provincia...</option>
    <option value="" >..............................</option>        
    <?php
    $xml 
simplexml_load_file('provinciasypoblaciones.xml');
    
$result $xml->xpath("/lista/provincia/nombre | /lista/provincia/@id");
    for (
$i=0;$i<count($result);$i+=2
    {
    
$e=$i+1;
    
$provincia=UTF8_DECODE($result[$e]);
    echo(
"<option value='$result[$i]'>$provincia</option>");
    }
    
?>
    </select>
<b>Localidad</b><br>
    <div id="localidadcambio">
    <select name="localidadList" id="localidadList" >
    <option >Seleccione antes una Provincia</option>
    <option value="" >..............................</option>    
    </select> <span id="advice"> </span> 

<script>
function localidadnueva(){$('localidadcambio').innerHTML='<input type="text" name="localidadtxt" id="localidadtxt" value="" / size="50"> <a href="javascript:listadolocalidades()">[B]Volver a mostrar el listado anterior[/B]</a>';}

function listadolocalidades(){
    $('celda_localidad').innerHTML='<div id="localidadcambio"><select name="localidadList" id="localidadList" ><option >Seleccione antes una Provincia</option><option value="" >..............................</option></select> <span id="advice"> <a href="javascript:localidadnueva()">¿No está tu localidad en el listado?</a></span> ';

</script>
<a href="javascript:localidadnueva()">¿No encuentras tu localidad en el listado? Click aquí</a>
Me echáis una mano? gracias a todos