image
Inicio » Foros » JavaScript

JavaScript

select multiples

Volver al foro | Responder | Añadir nuevo tema


De: edgar
Fecha: 22/05/2007
Mensaje:

no he podico controlar los elementos seleccionados de una text box de seleccion multiple desde el script intente con la instruccion: document.crear.elements['cen_rel[]'] pero no me isrve pues me toma todos los elecmentos contenidos en el select y solo necesito los que se seleccionan


Quizás le interese
De: jbosch(vosk)
Util para: 1 personas

Fecha: 22/05/2007
Mensaje:

puedes crear una lista de opciones seleccionadas simplemente recorriendo todo el select y buscando elementos con el atributo 'selected'. la longitud de opciones será 'puntero_select.length', luego solo tienes que

for(var q=0;q<puntero_select.length;q++)
{
if(s[q].selected)
{
//el option #q está seleccionado
}
}

para crear la lista puedes plantearlo de dos formas: una lista con los textos o los valores de los option seleccionados, o una lista con los punteros a los option seleccionados (yo prefiero esta segunda). esta lista será un simple array y lo vas llenando dentro de la codicion de 's[q].selected', de forma que

var l=new Array;
for(var q=0;q<s.length;q++)
{
if(s[q].selected)
{
l[l.length]=s[q];
}
}

ahora en 'l' tienes una lista de punteros a los option seleccionados, y puedes trabajar con esos directamente: 'l[indice].value' te mostrará el valor interno del option, 'l[indice].text' te mostrará el texto externo del option, etc...
puedes ampliar la funcionalidad con un array de arrays donde el primero sea el indice de ese option seleccionado dentro de la lista del select (que no necesariamente coincidirá con el indice que tiene dentro de la lista de seleccionados) y el segundo el puntero al option; p.ej.

if(s[q].selected)
{
l[l.length]=new Array(q,s[q]);
}

ahora el l[indice][0] será el indice del option dentro del select y l[indice][1] será un puntero al option. para recorrer todos los valores solo tienes que

var t;
for(var q=0;q<l.length;q++)
{
t="Indice real="+l[q][0]+"n";
t+="Indice en lista="+q+"n";
t+="Valor="+l[q][1].value+"n";
t+="Texto="+l[q][1].text;
alert(t);
}

una vez hayas terminado de usar el array tienes que eliminarlo con

l.splice(0,l.length);

supongo que vas a usar esto para enviar como parámetros a un script de servidor la lista de options seleccionados en un select. para ello tienes que dejar el select fuera del formulario y en su lugar ubicar un campo oculto donde escribiras los valores o los textos de los options seleccionados; ten en cuenta que deberas usar un separador de valores, que puedes ser la coma ',' que te saldrá en la lista cuando la escribas directamente dentro del campo oculto (luego en el servidor puedes usar una funcion de split para reconvertir esa cadena de texto a un nuevo array). de esta forma si has cargado el select desde una bdd, solo tendras que regoger los indices de los seleccionados dentro del select y enviarlos como parámetro al servidor, una vez allí reconviertes el parámetro a lista de indices y ya puedes trabajar con los indices en la bdd. de esto ultimo hay mil formas de trabajar, y seguramente ya tendrás tu propia idea.

jbosch(vosk)



Volver al foro | Responder | Añadir nuevo tema

Quizás le interese:

WebEstilo.com no se hace responsable de las opiniones que los usuarios puedan verter en cualquiera de los foros existentes.

Si te solucionó el problema pulsa en G+1


Gracias!






Comparte



Última modificación:31 de Agosto de 2017. Spain - Espa�a.
© 1998-2004 por . Todos los derechos reservados.