Comunidad de diseño web y desarrollo en internet online

Problema con combobox dependientes

Citar            
MensajeEscrito el 14 Mar 2007 11:07 pm
Tengo un problema con un combobox no se si alguien pueda ayudarme se trata de combobox dependientes pero el tercero no me jala no se que estoy haciendo mal y lo malo que necesito cuatro combobox que sean dependientes este es mi codigo

combo1.dataProvider = [{label:"Marcas"},{label: "Honda", data: 1},{label: "Nissan", data: 2}];
combo2.dataProvider = [{label:"Piezas"},{label: "Mangueras", data: 1},{label: "Radiador", data: 2}];
combo3.dataProvider = [{label:"Año"},{label: "dos", data: 1},{label: "dos", data: 2}];
combo2.rowCount = 3;
Honda = new Array("Mangueras;mangue.swf","Bombas;http://www.sitio.com");
Nissan = new Array("Radiador;http://www.sitio.com","Radiador;http://www.sitio.com");
combo3.rowCount = 2;
Mangueras = new Array("dos;mangue.swf","crema;http://www.sitio.com");
Radiador= new Array("dos;mangue.swf","crema;http://www.sitio.com");
Chevrolet = new Array("Bombas;http://www.sitio.com","Bombas;http://www.sitio.com");




//Creo un listener
listenerPrincipal = new Object();
//que actua al evento change
listenerPrincipal.change = function (){
//Defino el item seleccionado
var ItemSeleccionado = combo1.selectedItem.label;


//Elimino todos los items del subcombo
combo2.removeAll();
combo3.removeAll();
//Construyo los items del subcombo
var subArray = eval(ItemSeleccionado);
var SubCombo = new Array()


for(var i = 0; i < subArray.length; i++) {
//Separo utilizando el delimitador
SubCombo = subArray[i].split(";");
combo2.addItem(SubCombo[0],SubCombo[1],SubCombo[2]);
combo3.addItem(SubCombo[0],SubCombo[1]);

}
}

//Creo un segundo listener para el segundo combo

listenerTerciario = new Object();
//que actua al evento change
listenerTerciario.change = function (evt){
//y va a la página web seleccionada
loadMovie(combo3.selectedItem.data,"conte");
}

combo1.addEventListener("change", listenerPrincipal);
combo2.addEventListener("change", listenerSecundario);
combo3.addEventListener("change", listenerTerciario);



pero no quiero que jale la info de un xml
no se si alguien pueda orientarme :oops: :D

Por lomita

8 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 15 Mar 2007 02:30 am
Que onda!
Bueno, te voy a enseñar como lo hice yo con tres combos y la info proviene de XML generados en PHP, voy a ponerlo muy general, pues es codigo de la chamba :P

Primero mis XML's

Código :

//declaro mis variables y las instancio de tipo XML
var marcas_xml:XML = new XML();
var modelos_xml:XML = new XML();
var submodelos_xml:XML = new XML();
//le digo a los objetos XML que ignoren los espacios en blanco
//y solo al primer combo le carga la info
with (marcas_xml) {
   ignoreWhite = true;
   load("marcas.php");
}
modelos_xml.ignoreWhite = true;
submodelos_xml.ignoreWhite = true;
marcas_xml.onLoad = function(success:Boolean) {
   //si cargo bien, empieza a cargar
   if (success) {
      for (i in marcas_xml.firstChild.childNodes) {
         marca_cmb.addItem({label:marcas_xml.childNodes[0].childNodes[i].attributes.marca, data:marcas_xml.childNodes[0].childNodes[i].attributes.codigo});
      }
      //cargo los datos del segundo combo
      modelos_xml.load("modelos.php?codigo="+marca_cmb.getItemAt(0).data);
   } else {
      trace("Archivo no disponible!");
   }
};
modelos_xml.onLoad = function(success:Boolean) {
   //si cargo bien, empieza a cargar
   if (success) {
      //me voy a una funcion para llenar el combo
      llenaModelo();
   } else {
      trace("Archivo no disponible!");
   }
};
submodelos_xml.onLoad = function(success:Boolean) {
   //si cargo bien, empieza a cargar
   if (success) {
      //me voy a una funcion para llenar el combo
      llenaSubmodelo();
   } else {
      trace("Archivo no disponible!");
   }
};


Mis funciones de llenado:

Código :

function llenaModelo():Void {
   //borro lo que tenga para no tener basura
   modelo_cmb.removeAll();
   for (i in modelos_xml.firstChild.childNodes) {
      modelo_cmb.addItem({label:modelos_xml.childNodes[0].childNodes[i].attributes.modelo});
   }
   submodelos_xml.load("submodelos.php?codigo="+marca_cmb.getItemAt(marca_cmb.selectedIndex).data+"&modelo="+modelo_cmb.getItemAt(modelo_cmb.selectedIndex).label);
}
function llenaSubmodelo():Void {
   //borro lo que tenga para no tener basura
   submodelo_cmb.removeAll();
   for (i in submodelos_xml.firstChild.childNodes) {
      submodelo_cmb.addItem({label:submodelos_xml.childNodes[0].childNodes[i].attributes.submodelo, data:submodelos_xml.childNodes[0].childNodes[i].attributes.categoria});
   }
}


Y mis listeners que controlan cuando algun combo cambia:

Código :

var marcaChange:Object = new Object();
marcaChange.change = function(obj:Object) {
   modelos_xml.load("modelos.php?codigo="+obj.target.getItemAt(obj.target.selectedIndex).data);
};
marca_cmb.addEventListener("change", marcaChange);
var modeloChange:Object = new Object();
modeloChange.change = function(obj:Object) {
   submodelos_xml.load("submodelos.php?codigo="+marca_cmb.getItemAt(marca_cmb.selectedIndex).data+"&modelo="+obj.target.getItemAt(obj.target.selectedIndex).label);
};
modelo_cmb.addEventListener("change", modeloChange);


Este ejemplo es solo con 3 combos, pero espero que esto te sirva de algo, ok? :wink:
Ciao!

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.