Foros del Web » Programando para Internet » Javascript »

Pasar elementos en select múltiple

Estas en el tema de Pasar elementos en select múltiple en el foro de Javascript en Foros del Web. Hola compañeros, tengo un problema con un select múltiple cuando paso elementos en javascript. Os pongo el código y escribo el problema: Código PHP: <! ...
  #1 (permalink)  
Antiguo 17/09/2009, 06:01
Avatar de anibalag85  
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 11 meses
Puntos: 1
Pasar elementos en select múltiple

Hola compañeros, tengo un problema con un select múltiple cuando paso elementos en javascript. Os pongo el código y escribo el problema:

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
    <
head>
        <
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <
title></title>
        <
script language="javascript">
            function 
pasarOpcionesDerecha(form) {
                var 
combo1 form.combo1.options;
                var 
combo2 form.combo2.options;
                
nuevaOpcion = new Option(combo1[combo1.selectedIndex].text,combo1[combo1.selectedIndex].value,"","");
                
combo2.length;
                
                if (
a==0) { 
                    
i=0
                } else{ 
                    
i=a
                }
                
combo2[i] = nuevaOpcion;
                
form.combo1.options[form.combo1.options.selectedIndex] = null;
            }
            
            function 
pasarOpcionesIzquierda(form) {
                var 
combo1 form.combo1.options;
                var 
combo2 form.combo2.options;
                
nuevaOpcion = new Option(combo2[combo2.selectedIndex].text,combo2[combo2.selectedIndex].value,"","");
                
combo1.length;
                
                if (
a==0) { 
                    
i=0
                } else{ 
                    
i=a
                }
                
combo1[i] = nuevaOpcion;
                
form.combo2.options[form.combo2.options.selectedIndex] = null;
            }
        
</script>
    </head>
    <body>
                <table style="margin-top:15px;">
                    <tr>
                          <form name="form">
                          <td>

                            <select name="combo1" multiple size=6>
                                <option value="1">Opcion 1</option>
                                <option value="2">Opcion 2</option>
                                <option value="3">Opcion 3</option>
                                <option value="4">Opcion 4</option>
                                <option value="5">Opcion 5</option>
                                <option value="6">Opcion 6</option>
                            </select>
                          </td>
                          <td>
                            <input type="button" value=" > " onClick="pasarOpcionesDerecha(this.form)"><br />
                            <input type="button" value=" < " onClick="pasarOpcionesIzquierda(this.form)">
                          </td>
                          <td>
                            <select name="combo2" multiple size=6></select>
                          </td>
                         </form>  
                        
                    </tr>
                   
                </table>

    </body>
</html> 
Bien, esta página tiene dos select múltiples, uno con opciones y el otro no, yo puedo pasar las opciones desde el select 1 hasta el select 2 y viceversa, el problema es que solo puedo pasar de un elemento en un elemento, y yo quiero poder pasar varios elementos a la vez.

Podrían ayudarme a cambiar el código para pasar varios elementos.
Gracias
  #2 (permalink)  
Antiguo 17/09/2009, 14:14
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 18 años, 2 meses
Puntos: 56
Mover elementos en select múltiple

Código javascript:
Ver original
  1. function pasarOpciones(from,to){
  2.     var _from = from.options;
  3.     for (var i=0 ;i < _from.length; i++){
  4.         var opt = _from[i];
  5.         if(opt.selected){
  6.             var n = document.createElement("option");
  7.             n.value = opt.value;
  8.             n.text = opt.text;
  9.             n.selected = 1;
  10.            
  11.             try{ to.add(n,null); from.remove(i,null)
  12.             }catch(e){  to.add(n); from.remove(i) }
  13.             i--
  14.         }
  15.     }
  16. }

Código HTML:
 <form>
                          <td>

                            <select name="combo1" multiple="" size="6">
                                <option value="1">Opcion 1</option>
                                <option value="2">Opcion 2</option>
                                <option value="3">Opcion 3</option>
                                <option value="4">Opcion 4</option>
                                <option value="5">Opcion 5</option>
                                <option value="6">Opcion 6</option>
                            </select>
                          </td>
                          <td>
                            <input type="button" value=" &gt; " onClick="pasarOpciones(combo1,combo2)"><br />
                            <input type="button" value=" &lt; " onClick="pasarOpciones(combo2,combo1)">
                          </td>
                          <td>
                            <select name="combo2" multiple="" size="6"></select>
                          </td>
                         </form> 
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #3 (permalink)  
Antiguo 18/09/2009, 02:10
Avatar de anibalag85  
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Pasar elementos en select múltiple

Muchas gracias, es un aporte estupendo, y mucho mas reducido de como lo tenía yo. Karma para ti.
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 22:42.