Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Recoger valores de selec multiple

Estas en el tema de Recoger valores de selec multiple en el foro de Frameworks JS en Foros del Web. Como les va , la verdad que he tenido mas de tres dias intentandoo de todo y no he logrado hacerlo, por favor si alguien ...
  #1 (permalink)  
Antiguo 12/03/2008, 18:04
 
Fecha de Ingreso: septiembre-2004
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Recoger valores de selec multiple

Como les va , la verdad que he tenido mas de tres dias intentandoo de todo y no he logrado hacerlo, por favor si alguien sabe como, agradeceria mucho la ayuda.

Mi problema es el siguiente tengo una funcion que trabaja exelente con ajax el problema que si al formulario se le agrega una lista menu multiple no tengo ni idea de como pasar los valores a ajax para que sean enviado como variable.

Aqui esta mi funcion.
Código HTML:
function actualiza_datos(){
	//donde se mostrará lo resultados
	divContenido = document.getElementById('contenido');
	//valores de los cajas de texto
	nombres=document.myForm2.nombres.value;//
	apellidos=document.myForm2.apellidos.value;//
	deportes=document.myForm2.elements['deportes[]'].value;// este no funciona
	nacionalidad=document.myForm2.nacionalidad.value;//
	lis_niveles=document.myForm2.elements['lis_niveles[]'].value;// este no funciona
	seccion=document.myForm2.seccion.value;//
	usuario=document.myForm2.usuario.value;//
	clave=document.myForm2.clave.value;//
	pag=document.myForm2.pag.value;//
	//instanciamos el objetoAjax
	ajax=objetoAjax();
	//usando del medoto POST
	//archivo que realizará la operacion ->actualizacion.php
	ajax.open("POST", "list_docente.php",true);
	divContenido.innerHTML= '<img src="http://www.forosdelweb.com/images/ajax-loader.gif">';
	ajax.onreadystatechange=function() {
		if (ajax.readyState==4) {
			//mostrar los nuevos registros en esta capa
			divContenido.innerHTML = ajax.responseText

		}
	}
	//muy importante este encabezado ya que hacemos uso de un formulario
	ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	//enviando los valores
	ajax.send("nombres="+nombres+"&apellidos="+apellidos+"&deportes="+deportes+"&nacionalidad="+nacionalidad+"&lis_niveles="+lis_niveles+"&seccion="+seccion+"&usuario="+usuario+"&clave="+clave+"&pag="+pag)
}
mis selesct multiples son de tipo
<select name="deportes[]" size="3" multiple="multiple" class="textboxselectlargo" id="deportes[]" >
<option value=1>natacion</option>
<option value=2>futbol</option>
etc
Desde ya gracias por la ayuda
__________________
El conocimiento es mi adicción y la programación mi pasión
:adios:
  #2 (permalink)  
Antiguo 12/03/2008, 21:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Recoger valores de selec multiple

Hola cyber-bot, puedes usar mi script: http://www.forosdelweb.com/f77/aport...e-ajax-563637/, y crear tu select y rescatar los elementos:
Código:
var sel = new HTMLSelect( 'deportes[]' );
var selectedOptions = sel.getSelectedOptions();
Eso te regresa un Arreglo con todas las opciones, si las quieres por decir en una lista separada por comas puedes hacer:
Código:
var selectedOptions = sel.getSelectedOptions().join(",");
Saludos.
  #3 (permalink)  
Antiguo 14/04/2008, 11:04
Avatar de oabareload  
Fecha de Ingreso: junio-2006
Ubicación: Distrito Federal, México
Mensajes: 57
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Recoger valores de selec multiple

Código HTML:
function enviarFormulario(url, formid, divid)
    {
        cargando();
        var cadenaFormulario = "";
        var Formulario = getElmById(formid);
        var longitudFormulario = Formulario.elements.length;
        for (var i = 0; i < longitudFormulario; i++)
            {
                if (Formulario.elements[i].tagName == "SELECT")
                    {
                        for (y=0; y < Formulario.elements[i].options.length; y++)
                            {
                                if (Formulario.elements[i].options[y].selected)
                                    {
                                    cadenaFormulario += Formulario.elements[i].name +"="+escape(Formulario.elements[i].options[y].value)+"&";
                                    }
                            }
                    }
                else
                    {
                        if (Formulario.elements[i].type=='checkbox')
                            {
                                    if (Formulario.elements[i].checked == true)
                                        {
                                            cadenaFormulario += Formulario.elements[i].name +"="+escape(Formulario.elements[i].value)+"&";                                            
                                        }
                            }
                        else
                            {
                                cadenaFormulario += Formulario.elements[i].name + "=" + escape(Formulario.elements[i].value) + "&";
                            }
                    }
            }
        var peticion = nuevoAjax();
        peticion.open("POST", url, true);
        peticion.onreadystatechange = function()
            {
                if (peticion.readyState == 4)
                    {
                        if (peticion.status && peticion.status == 200 && !peticion.error)
                            {
                                var obj = getElmById(divid);                                
                                txt=unescape(peticion.responseText);
                                obj.innerHTML = txt;
                                return;                   
                            }
                        else
                            {
                                estado(peticion.status,peticion.statusText);
                                return;
                            }
                    }
            }
        peticion.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
        peticion.send(cadenaFormulario);
        return false;
    }
Esa es mi función que he logrado crear a lo largo del tiempo, solo le falta leer los optionbox... y ya... espero te sirva... dudas... me preguntas...
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 19:05.