Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks JS (http://www.forosdelweb.com/f127/)
-   -   Recoger valores de selec multiple (http://www.forosdelweb.com/f127/recoger-valores-selec-multiple-565504/)

cyber-bot- 12/03/2008 18:04

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

GatorV 12/03/2008 21:14

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.

oabareload 14/04/2008 11:04

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...


La zona horaria es GMT -6. Ahora son las 02:56.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.