Foros del Web » Programando para Internet » Javascript »

Rellenar un select a partir de los datos de otro select

Estas en el tema de Rellenar un select a partir de los datos de otro select en el foro de Javascript en Foros del Web. Buenas, quisiera saber si hay algun modo de rellenar un select multiple a partir de los datos de otro select multiple (el nombre de este ...
  #1 (permalink)  
Antiguo 03/11/2004, 06:22
Usuario no validado
 
Fecha de Ingreso: febrero-2004
Mensajes: 32
Antigüedad: 20 años, 2 meses
Puntos: 0
Pregunta Rellenar un select a partir de los datos de otro select

Buenas, quisiera saber si hay algun modo de rellenar un select multiple a partir de los datos de otro select multiple (el nombre de este select es contactosSel).

Yo tengo este select multiple:
<!-- Listado del contacto seleccionado -->
<select name="contactosSel" size=5 multiple id="contactosSel">
<option value='Manuel,1'>Manuel</option>
<option value='Toni,2'>Toni</option>
<option value='Eli,3'>Eli</option>
</select>
<!-- Fin del listado del contacto selecionado-->

Y lo que quiero, es que si por ejemplo, pulsas sobre la opción Manuel, se rellene otro select Multiple (contactos), con esta opcion Manuel, y como valor 1. De ahi que utilize como valor de la opcion "manuel,1". Es decir por ejemplo:

<select name="contactos" multiple>
<option value='1'>Manuel</option>
</select>

Y si vuelves a seleccionar manuel en el select "contactosSel", si ya esta en el otro select (contactos), no se vuelve a rellenar.

Un saludo a todos!
  #2 (permalink)  
Antiguo 03/11/2004, 07:01
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola Chispi.

Revisa el Faq-64 a ver si te da pistas para hacer lo que necesitas.

Saludos.
  #3 (permalink)  
Antiguo 03/11/2004, 09:11
Usuario no validado
 
Fecha de Ingreso: febrero-2004
Mensajes: 32
Antigüedad: 20 años, 2 meses
Puntos: 0
Gracias!! Ya lo vi, antes de hacer la pregunta.
Pero este faq lo hace con textarea.

No obstante lo mirare a fondo a ver si puedo sacar alguna idea.

Muchas gracias por todo, Kaopectate.
  #4 (permalink)  
Antiguo 03/11/2004, 12:23
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola Chispi.

Aprobechando parte del código de la FAQ-1 de Kaopectate (¡Hola Maestro! ) he sacado esto:
Código HTML:
<html>
<head>
<title>Untitled</title>
<script type="text/javascript">
function addOpt(oCntrl, iPos, sTxt, sVal){
     var selOpcion=new Option(sTxt, sVal);
     eval(oCntrl.options[iPos]=selOpcion);
   }
function anadir(obj) {
	conta=document.getElementById('contactos');
  for (i=0;i<conta.options.length;i++)
  	if(conta.options[i].value==obj.value)
    	return
  valor=obj.value;
  txt=obj.options(obj.selectedIndex).text;
  posi=conta.options.length;
  addOpt(conta,posi,txt,valor);
}
</script>
</head>
<body>
<select name="contactosSel" size=5 multiple id="contactosSel" onchange="anadir(this)">
<option value='Manuel,1'>Manuel</option>
<option value='Toni,2'>Toni</option>
<option value='Eli,3'>Eli</option>
</select>
<select name="contactos" id="contactos" multiple>
</select>

</body>
</html> 
Espero que te sirva. Saludos,
  #5 (permalink)  
Antiguo 04/11/2004, 03:39
Usuario no validado
 
Fecha de Ingreso: febrero-2004
Mensajes: 32
Antigüedad: 20 años, 2 meses
Puntos: 0
Muchas gracias, JavierB.

Funciona a la perfeccion, pero me podias explicar un poco lo que hace, mas o menos lo intuyo.

//Conta contiene el obtjeto select destino.
conta=document.getElementById('contactos');

//Aqui no se porque haces este bucle ???
for (i=0;i<conta.options.length;i++)

//Aqui si es la misma opcion no haces nada
if(conta.options[i].value==obj.value) return

//Aqui coges el valor, y el texto de la opcion seleccionada
valor=obj.value;
txt=obj.options(obj.selectedIndex).text;
posi=conta.options.length;

//Llamas a la funcion para añadir el contacto
addOpt(conta,posi,txt,valor);

//Esta funcion inserta el contacto en el select
function addOpt(oCntrl, iPos, sTxt, sVal){
var selOpcion=new Option(sTxt, sVal);
eval(oCntrl.options[iPos]=selOpcion);
}

Mas o menos eso es lo que entiendo del codigo, si me he equivocado en algo, ruego me lo comenteis.

Sabeis si hay alguna funcion parecida para quitar de la lista destino (contactos).

Muchas gracias por todo!!!
Un saludo a todos.
  #6 (permalink)  
Antiguo 04/11/2004, 10:59
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Cita:
Iniciado por Chispi
//Aqui no se porque haces este bucle ???
for (i=0;i<conta.options.length;i++)
Es para recorrer todas las opciones del select y ver si ya se había incluido anteriormente.

Para quitar elementos de una lista, puedes usar:

conta.options[1]=null;

Teniendo en cuenta que el primer elemento es cero.

Saludos,
  #7 (permalink)  
Antiguo 04/11/2004, 11:13
Usuario no validado
 
Fecha de Ingreso: febrero-2004
Mensajes: 32
Antigüedad: 20 años, 2 meses
Puntos: 0
Muchas gracias, me ha servido mucho!!!

Lo habia consegido haciendo otra cosa. Recorria todas las opciones y me guardaba en un array todas aquellas que eran diferentes a la opcion escogido. Y despues volcaba este array en la lista.

Pero es muhco mas fácil y corto asi!

Muchas gracias.
Un saludo a todos
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 05:17.