Foros del Web » Programando para Internet » Javascript »

Crear Select dependiente de otro

Estas en el tema de Crear Select dependiente de otro en el foro de Javascript en Foros del Web. Hola, tengo un Select cuyas opciones creo desde un array y utilizo una función para eliminar duplicados, pero ahora necesito crear otro Select y que ...
  #1 (permalink)  
Antiguo 31/07/2014, 07:11
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Crear Select dependiente de otro

Hola, tengo un Select cuyas opciones creo desde un array y utilizo una función para eliminar duplicados, pero ahora necesito crear otro Select y que al pinchar en una opcion del primer Select en el segundo me muestre las opciones correspondientes a la opción seleccionada en el primero pero manteniendo la función para eliminar duplicados porque en el segundo select también me puedo encontrar con elementos repetidos.

Este es el código que tengo, pero no se como enlazar el select2 con el Select1
Código Javascript:
Ver original
  1. var datos = new Array();
  2. datos = [['Luis','deporte'],
  3. ['Antonio','manualidades'],
  4. ['Eva','deporte'],
  5. ['David','manualidades'],
  6. ['Maria','deporte']];
  7.  
  8.  function eliminaDuplicados(arr) {
  9.  var i,
  10.      len=arr.length,
  11.      out=[],
  12.      obj={};
  13.  
  14.  for (i=0;i<len;i++) {
  15.     obj[arr[i][1]]=0;
  16.  }
  17.  for (i in obj) {
  18.     out.push(i);
  19.  }
  20.  return out.sort();
  21. }
  22.  
  23. function cambiar(){
  24. var opciones = eliminaDuplicados(datos),
  25.     total = opciones.length,
  26.     lista = document.getElementById("select1");
  27. for (var i = 0; i < total; i++){
  28.     var opcion = document.createElement("option");
  29.     opcion.value = opciones[i];
  30.     opcion.innerHTML = opciones[i];
  31.     lista.appendChild(opcion);
  32.     opciones[i] = "Valor";
  33. }
  34. var variable = new Option("Elija una opcion","","defaultSelected","selected");
  35. select1.options[0] = variable;
  36. }
Me he creado este array para el segundo select y mi idea es que el elemento deporte del primer select se correspondería con el subCat[1]
El elemento manualidades del primer select se correspondería con el subCat[2] y así sucesivamente, pero al ponerle el índice al array ya no funciona, así que no se como conectar los datos de un select con los del otro.
Código Javascript:
Ver original
  1. var subCat = new Array();
  2. subCat[1] = [['futbol'],['balonmano'],['futbol']];
  3. subCat[2] = [['pintura'],['ceramica'],['pintura']];
  4.  
  5.  function eliminaDuplicados2(arr) {
  6.  var i,
  7.      len=arr.length,
  8.      out=[],
  9.      obj={};
  10.  
  11.  for (i=0;i<len;i++) {
  12.     obj[arr[i]]=0;
  13.  }
  14.  for (i in obj) {
  15.     out.push(i);
  16.  }
  17.  return out.sort();
  18. }
  19.  
  20.     function cambiarSubCat(){
  21. var opciones = eliminaDuplicados2(subCat),
  22.     total = opciones.length,
  23.     lista = document.getElementById("select2");
  24. for (var i = 0; i < total; i++){
  25.     var opcion = document.createElement("option");
  26.     opcion.value = opciones[i];
  27.     opcion.innerHTML = opciones[i];
  28.     lista.appendChild(opcion);
  29.     opciones[i] = "Valor";
  30. }
  31. var variable = new Option("Elija una actividad","","defaultSelected","selected");
  32. select2.options[0] = variable;
  33. }
Código HTML:
Ver original
  1. <body onload="cambiar()">
  2. <select id="select1">
  3.   <option></option>
  4.   </select>    
  5.  <select id='select2'>
  6.             <option></option>
  7.         </select>

Etiquetas: dependiente, funcion, html, select, valor, variable
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 17:43.