Foros del Web » Programando para Internet » ASP Clásico »

Tratamiento de listas con ASP y javascript

Estas en el tema de Tratamiento de listas con ASP y javascript en el foro de ASP Clásico en Foros del Web. Tengo una asp, en la cual hay dos listas, la primera carga Comunidades Autonomas y la segunda provincias. Quiero realizar lo siguiente : Cuando carga ...
  #1 (permalink)  
Antiguo 14/01/2008, 07:30
 
Fecha de Ingreso: noviembre-2005
Mensajes: 405
Antigüedad: 19 años, 6 meses
Puntos: 0
Tratamiento de listas con ASP y javascript

Tengo una asp, en la cual hay dos listas, la primera carga Comunidades Autonomas y la segunda provincias. Quiero realizar lo siguiente :

Cuando carga en pantalla la ASP, la primera lista estará cargada, pero la segundo se deberá de cargar cuando yo seleccione una comunidad con todos sus provincias.

Por ejemplo

En la lista primera tengo

Cataluña
Madrid
Extremadura.

Cuando seleccione Extremadura, en la segunda lista ha de aparecer Caceres y Badajoz.

Alguien me puede ayudar como hacerlo?.

Gracias
Jaime
  #2 (permalink)  
Antiguo 14/01/2008, 08:05
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 4 meses
Puntos: 126
Re: Tratamiento de listas con ASP y javascript

Gracias de derkeNuke tenemos esto. A ver si te ayuda

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
<
html
<
head
<
title>SELECTs depedientes con inteligencia hacia atrás</title
<
meta name="Author" content="derkeNuke"
</
head

<
body



<
script

/**************************************************************** 
    ESTRUCTURA BÁSICA 
****************************************************************/ 
var paises=["PAIS1","PAIS2","PAIS3"]; 
var 
provincias=[ 
    [
"PROVINCIA1 (p1)","PROVINCIA2 (p1)",  "PROVINCIA3 (p1)""PROVINCIA4 (p1)"],  
    [
"PROVINCIA1 (p2)""PROVINCIA2 (p2)""PROVINCIA3 (p2)""PROVINCIA4 (p2)""PROVINCIA5 (p2)""PROVINCIA6 (p2)"],  
    [
"PROVINCIA1 (p3)""PROVINCIA2 (p3)""PROVINCIA3 (p3)" 
]; 
var 
ciudades=[ 
    [ 
        [
"ciud1-1-1""ciud1-1-2""ciud1-1-3""ciud1-1-4""ciud1-1-5" ], 
        [
"ciud1-2-1""ciud1-2-2""ciud1-2-3""ciud1-2-4" ], 
        [
"ciud1-3-1""ciud1-3-2""ciud1-3-3""ciud1-3-4" ], 
        [
"ciud1-4-1""ciud1-4-2""ciud1-4-3" 
    ], 
     
    [ 
        [
"ciud2-1-1""ciud2-1-2""ciud2-1-3""ciud2-1-4""ciud2-1-5""ciud2-1-6""ciud2-1-7""ciud2-1-8" ], 
        [
"ciud2-2-1""ciud2-2-2""ciud2-2-3""ciud2-2-4""ciud2-2-5""ciud2-2-6" ], 
        [
"ciud2-3-1""ciud2-3-2""ciud2-3-3""ciud2-3-4""ciud2-3-5""ciud2-3-6" ], 
        [
"ciud2-4-1""ciud2-4-2""ciud2-4-3""ciud2-4-4""ciud2-4-5""ciud2-4-6""ciud2-4-7" ], 
        [
"ciud2-5-1""ciud2-5-2""ciud2-5-3""ciud2-5-4""ciud2-5-5" ], 
        [
"ciud2-6-1""ciud2-6-2""ciud2-6-3""ciud2-6-4""ciud2-6-5" 
    ], 
     
    [ 
        [
"ciud3-1-1""ciud3-1-2""ciud3-1-3""ciud3-1-4""ciud3-1-5""ciud3-1-6""ciud3-1-7""ciud3-1-8" ], 
        [
"ciud3-2-1""ciud3-2-2""ciud3-2-3" ], 
        [
"ciud3-3-1""ciud3-3-2""ciud3-3-3""ciud3-3-4" 
    ] 
]; 


/**************************************************************** 
    FUNCIONES ÚTILES PARA ARRAYS Y SELECTS 
****************************************************************/ 

//agrega un option a un select, con un par de atributos extra que nos serán útiles 
function agregarOpt(elSel,txt,valor,suPais,suProvincia,contieneProvincias,contieneCiudades) { 
    var 
indice=elSel.options.length
    
elSel.optionsindice ] = new Option(txt,valor); 
    
elSel.optionsindice ].suPais=suPais
    
elSel.optionsindice ].suProvincia=suProvincia
    
elSel.optionsindice ].contieneProvincias=contieneProvincias
    
elSel.optionsindice ].contieneCiudades=contieneCiudades


//selecciona la opción iPos en el select elSelect 
function selecciona(elSelect,iPos) {  
    
elSelect.options[iPos].selected="selected";        // para los estándares 
    
elSelect.options.selectedIndex=iPos;            // a la manera IE 


//devuelve true si el elemento elem se encuentra entre los elementos del array 
Array.prototype.existe=function(elem) { 
    for(var 
i=0;i<this.length;i++) 
        if( 
this[i] == elem ) return true
    return 
false


//borra todas las opciones de un select cuyo valor no se encuentre entre los elementos de elArray 
function dejarOpcionesExistentes(elSelect,elArray) { 
    for(var 
i=0i<elSelect.options.lengthi++) { 
        if( !
elArray.existeelSelect.options[i].value ) ) { 
            
//borramos la opcion 
            
elSelect.options[i]=null
            
i--;    //reducimos i porque tenemos que iterar más veces (el length de las options es uno menos) 
        

    } 


/**************************************************************** 
    CREACIÓN Y RELLENADO DE LOS SELECTS 
****************************************************************/ 

//Creamos los SELECTS 
var selPais=document.createElement("SELECT"); 
var 
selProv=document.createElement("SELECT"); 
var 
selCiud=document.createElement("SELECT"); 

//la función coloca en los selects creados todos los valores de los arrays, pudiendo salvar el select que se indique en los argumentos 
function reiniciar_selects(conPaises,conProvincias,ConCiudades) { 
    if (
conPaises==undefined || conPaises
        
haCambiadoPais=false
    
//eliminamos las option de los selects que procedan 
    
while( (conPaises==undefined || conPaises) && selPais.options.length>
        
selPais.options[0]=null
    while( (
conProvincias==undefined || conProvincias) && selProv.options.length>
        
selProv.options[0]=null
    while( (
ConCiudades==undefined || ConCiudades) && selCiud.options.length>
        
selCiud.options[0]=null
    
//colocamos las opciones nuevas si procede 
    
for(var i=0i<paises.lengthi++) { 
        if(
conPaises==undefined || conPaises )  
            
agregarOpt(selPaispaises[i], paises[i], nullnullprovincias[i].toString().split(","), ciudades[i].toString().split(",") ); 
        for(var 
j=0j<provincias[i].lengthj++) { 
            if(
conProvincias==undefined || conProvincias )   
                
agregarOpt(selProvprovincias[i][j], provincias[i][j], inullnullciudades[i][j].toString().split(",") ); 
            for(
k=0k<ciudades[i][j].lengthk++) { 
                if(
ConCiudades==undefined || ConCiudades ) { 
                    
//cuenta regresiva para contar todas las provincias anteriores (cuantas provincias habia en los paises anteriores) 
                    
var aux=i-1provinciasAnteriores=0
                    while(
aux>=0
                        
provinciasAnteriores+=provincias[aux--].length
                    
agregarOpt(selCiudciudades[i][j][k], ciudades[i][j][k], iprovinciasAnteriores+";"+jnullnull); 
                } 
            } 
        } 
    } 


var 
haCambiadoPais=false;        //elemento de control para contar las provincias al cambiar de ciudad 
reiniciar_selects(true,true,true);        //todos los valores en todos los selects 

//adjuntamos al documento 
document.body.appendChild(selPais); 
document.body.appendChild(selProv); 
document.body.appendChild(selCiud); 



/**************************************************************** 
    EVENTOS ONCHANGE PARA CADA UNO DE LOS SELECTS 
****************************************************************/ 
selPais.onchange=function() { 
    
//restablecemos provincias, ciudades 
    
reiniciar_selects(false,true,true); 
    
//cambiar provincias para que sólo contengan .contieneProvincias 
    
var contieneProvincias=this.options[this.options.selectedIndex].contieneProvincias
    
dejarOpcionesExistentes(selProv,contieneProvincias); 
    
//cambiar ciudades para que sólo contengan .contieneCiudades 
    
var contieneCiudades=this.options[this.options.selectedIndex].contieneCiudades
    
dejarOpcionesExistentes(selCiud,contieneCiudades); 
    
haCambiadoPais=true

selProv.onchange=function() { 
    
//restablecemos sólo ciudades 
    
reiniciar_selects(false,false,true); 
    
//seleccionar el pais al que pertenece la provincia 
    
var suPais=this.options[this.options.selectedIndex].suPais
    
selecciona(selPais,suPais); 
    
//cambiar ciudades para que sólo contengan .contieneCiudades 
    
var contieneCiudades=this.options[this.options.selectedIndex].contieneCiudades
    
dejarOpcionesExistentes(selCiud,contieneCiudades); 

selCiud.onchange=function() { 
    
//seleccionar el pais al que pertenece la ciudad 
    
var suPais=this.options[this.options.selectedIndex].suPais
    
selecciona(selPais,suPais); 
    
//seleccionar la provincia a la que pertenece la ciudad 
    
var suProvincia=this.options[this.options.selectedIndex].suProvincia
    if(!
haCambiadoPaissuProvincia=eval( suProvincia.replace(";","+") );        //suma de las provincias de los anteriores paises más la suya 
    
else suProvincia=suProvincia.split(";")[1];                                    //sólo la suya 
    
selecciona(selProv,suProvincia); 




//creamos un botón por si acaso se necesita restablecer todo: 
var boton=document.createElement("INPUT"); 
with(boton) { 
    
type="button"value="Restablecer"
    
setAttribute("onclick","reiniciar_selects(true,true,true)");        // estándar 
    
boton.onclick=reiniciar_selects;                                    // IE 

document.body.appendChild(boton); 


</script> 

</body> 
</html> 
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 14/01/2008, 08:16
 
Fecha de Ingreso: noviembre-2005
Mensajes: 405
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: Tratamiento de listas con ASP y javascript

Puede ser un ejemplo con ASP o algo más simple
  #4 (permalink)  
Antiguo 14/01/2008, 15:59
 
Fecha de Ingreso: noviembre-2005
Mensajes: 405
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: Tratamiento de listas con ASP y javascript

Alguien me puede dar alguna idea más clara?
  #5 (permalink)  
Antiguo 16/01/2008, 02:03
 
Fecha de Ingreso: noviembre-2005
Mensajes: 405
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: Tratamiento de listas con ASP y javascript

ya se hacerlo de otra manera más simple, gracias porla ayuda
  #6 (permalink)  
Antiguo 16/01/2008, 06:59
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 4 meses
Puntos: 126
Re: Tratamiento de listas con ASP y javascript

Bien por ti, pero un foro se trata de un lugar de intercambio de conocimientos. Así que estaría bien que lo compartieras con los demás foreros. Esta forma todos aprendemos.
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 11:58.