Foros del Web » Programando para Internet » Javascript »

Manejar multiples selecciones en combo

Estas en el tema de Manejar multiples selecciones en combo en el foro de Javascript en Foros del Web. Hello JS masters. Resulta que tengo una pagina en la que hay que poder permitir la seleccion de mas de un elemento del combo. Se ...
  #1 (permalink)  
Antiguo 18/07/2003, 11:54
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Manejar multiples selecciones en combo

Hello JS masters.

Resulta que tengo una pagina en la que hay que poder permitir la seleccion de mas de un elemento del combo.

Se que eso se hace con algo como:
<select name="menu" size="8" multiple.....>

Y que para obtener el valor seleccionado de el select (normal) uso:
var obj = document.all.menu
obj.options[obj.selectedIndex].value


Hasta ahi voy bien, pera ahora no se como voy a lidiar con las diferentes selecciones del combo, debido a que no se como accesar a cada una de ellas.

¿como lo hago?
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #2 (permalink)  
Antiguo 18/07/2003, 13:30
 
Fecha de Ingreso: julio-2003
Mensajes: 463
Antigüedad: 20 años, 9 meses
Puntos: 0
Hola, si lo quieres hacer en PHP debes poner:


<select name="menu[]" .....>



Y para acceder a las diferentes selecciones:

$valores=$_POST["menu"];

foreach($valores as $option)
{

echo $option;
}

Un saludo.

Última edición por dominguez; 18/07/2003 a las 13:45
  #3 (permalink)  
Antiguo 18/07/2003, 13:39
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Gracias, pero...

Si no me equivoco ese codigo es en PHP, quisiera hacerlo a traves de Javascript. ¿o si es JS?
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #4 (permalink)  
Antiguo 18/07/2003, 14:20
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola Mithrandir,

desconozco si hay algún método más sencillo.

Lo único que he sacado es esto.

Como no sé en qué momento vas a querer accesar a esos valores lo más que puedo hacer es dejarte este ejemplo. Si te sirve de orientación... estupendo.

<script language="JavaScript">
function pepe(cual)
{
for(m=0;m<cual.length;m++){
if(cual[m].selected == true){
alert(cual[m].value)}}
}
</script>

Sería cuestión de llamar a la función pasando por parámetro el campo en cuestión.

Por ejemplo onclick="pepe(this.form.select)"

Eso en el caso de que la llamaras desde un botón dentro del formulario.

Si llamaras desde el propio select sería onchange="pepe(this)"

Cualquier cosa, explicas un poco más lo que quieres y trato de ayudarte.

Un saludo
  #5 (permalink)  
Antiguo 18/07/2003, 14:28
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Gracias a ambos.

Tunait, entiendo el codigo y creo que me servira muy bien.

Respecto a para que lo quiero: Es para armar el querystring que posteriormente uso para formar un link que trabajo via ASP.

Como recolecto datos de varios componentes para formar el querystring, de ahi la duda de como saco los valores de el select.

Lo que todavia no se es como voy a mandar el array en el querystring, pero a ver que se me ocurre.

Gracias
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #6 (permalink)  
Antiguo 18/07/2003, 14:41
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
¿Necesitas enviarlos como valores individuales?

osea ?valor1=pepe&valor2=perico&valor3=bartolo

o como uno solo?

?valores= pepe,perico,bartolo

???
  #7 (permalink)  
Antiguo 18/07/2003, 14:48
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
No lo se aun, de todas formas lo tengo que obtener separado en la otra pagina.

El problema es que no solo obtengo valores del select, si no que hay otro componente y no se que me convenga:
caso a) ?valor1=pepe&valor2=perico&valor3=bartolo&otrocomp=uno
o
caso b) ?valores= pepe,perico,bartolo&otrocomp=uno
De cualquier forma me toca descomponer el querystring en algun momento en la otra pagina, a primer vista veo que es mas facil mandar el array como un solo valor, para tener que analizar solo una parte del string en lugar de analizar el string completo.

¿Que opinas?
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche

Última edición por Mithrandir; 21/07/2003 a las 11:57
  #8 (permalink)  
Antiguo 18/07/2003, 15:10
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Opino que ya puestos se pueden enviar por separado.

Mira, con esto la función devuelve una cadena lista para agregar al querystring

<script language="JavaScript">
var valores = new Array()
function pepe(cual)
{
var pos = 0
for(m=0;m<cual.length;m++)
{
if(cual[m].selected == true)
{
valores[pos] = "valor" + (pos + 1) + "=" + cual[m].value
pos++
}
}
var valorFinal = ""
for (t=0;t<valores.length;t++)
{
valorFinal += valores[t]
if(t < valores.length-1)
{
valorFinal += "&"
}
}
alert(valorFinal)
return valorFinal
}

Es que no sé luego cómo montas el resto de valores en la querystring. Así tal como está la función le pides un return pepe(this) (o lo que sea) y yá tienes lista la subcadena a agregar

¿Qué te parece?
  #9 (permalink)  
Antiguo 21/07/2003, 12:04
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Si, algo asi tenia pensado. Ahora que lo analizo, tanto el caso A, como el B son factibles.

Gracias por la ayuda
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 08:21.