Foros del Web » Programando para Internet » Javascript »

Rellenar un SELECT, dependiendo de otro SELECT

Estas en el tema de Rellenar un SELECT, dependiendo de otro SELECT en el foro de Javascript en Foros del Web. Tengo un formulario en el cual hay dos SELECT, en uno se selecciona la categoria y depende la categoria seleccionada, en el otro select saldran ...
  #1 (permalink)  
Antiguo 04/10/2012, 12:44
 
Fecha de Ingreso: agosto-2012
Ubicación: Almeria
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Rellenar un SELECT, dependiendo de otro SELECT

Tengo un formulario en el cual hay dos SELECT, en uno se selecciona la categoria y depende la categoria seleccionada, en el otro select saldran las subcategorias.

Funciona perfectamente el problema que tengo es: cuando seleccionas una categoria que tiene 10 subcategorias las muestra bien, pero si te arrepientes y seleccionas otra categoria que tiene menos subcategorias (6 por ejemplo), pues se muestran esas 6 y se muestran las ultimas 4 de la anterior categoria seleccionada.
En fin funciona bien, pero queda feo que muestre subcategorias que no corresponden.

El codigo es este:

Código PHP:
<script type="text/javascript">
            var 
sec 0;
            function 
actualizarSec(sec)
            {
                for(
vSector[sec].length  j++)
                {
                    
opt = new Option(vSector[sec][j],j);
                    
mySelect document.getElementById('listaSubsectores');
                    
mySelect.options[j] = opt;
                }
           }
        
</script> 
  #2 (permalink)  
Antiguo 04/10/2012, 13:15
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 4 meses
Puntos: 1532
Respuesta: Rellenar un SELECT, dependiendo de otro SELECT

lamentablemente como lo haces no funciona en ciertos navegadores (en teoría deben, pero en la practica falla), así corrijas los option extra que lo único que tendrías que hacer es vaciar el select en cuestión.

la forma de hacerlo 100% crossbrowser es "construir" el html del <select> en una variable y usar innerHTML para re-generarlo desde 0, si intentas esa forma, concatenando una string en JS resuelves ambos problemas

te parecerá una solución chapuza, poco elegante, pero es la que funciona, nos guste o no
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 04/10/2012, 16:19
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Rellenar un SELECT, dependiendo de otro SELECT

Pues yo uso una forma que me ha funcionado en diversos navegadores:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.             var sec = 0;
  3.             mySelect = document.getElementById('listaSubsectores');
  4.             mySelect.length=0;//eliminamos las opciones del select
  5.             function actualizarSec(sec)  {
  6.                 for(j = 1 ; j < vSector[sec].length  ; j++) {
  7.                     mySelect.length++;//aumentamos una opcion
  8.                     mySelect.options[j-1].value=vSector[sec][j];//asignamos el valor
  9.                     mySelect.options[j-1].text=vSector[sec][j];//asignamos el texto
  10.                 }
  11.            }
  12. </script>
  #4 (permalink)  
Antiguo 05/10/2012, 03:50
 
Fecha de Ingreso: agosto-2012
Ubicación: Almeria
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Rellenar un SELECT, dependiendo de otro SELECT

Gracias a los dos de veras.

He sacado el document.getElementById('listaSubsectores'); antes del for y he añadido a continuacion el borrado de opciones, y listo. Funciona en explorer, chrome y firefox.

Código PHP:
<script type="text/javascript">
            var 
sec 0;
            function 
actualizarSec(sec)
            {
                
mySelect document.getElementById('listaSubsectores');
                
mySelect.length=0;//eliminamos las opciones del select
                
for(vSector[sec].length  j++)
                {
                    
opt = new Option(vSector[sec][j],j);
                    
mySelect.options[j] = opt;
                }
           }
        
</script> 

Etiquetas: dependiendo, formulario, funcion, rellenar, select
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 18:30.