Foros del Web » Programando para Internet » Javascript »

copiar valor de select a otro

Estas en el tema de copiar valor de select a otro en el foro de Javascript en Foros del Web. Buen día :) Ahora tengo esta duda, es posible copiar valores de un select (o lista desplegable) a otra? Es decir tengo esta lista: Código ...
  #1 (permalink)  
Antiguo 08/09/2010, 11:12
Avatar de venom_mau  
Fecha de Ingreso: julio-2009
Mensajes: 152
Antigüedad: 14 años, 9 meses
Puntos: 2
Exclamación copiar valor de select a otro

Buen día :)

Ahora tengo esta duda, es posible copiar valores de un select (o lista desplegable) a otra?

Es decir tengo esta lista:
Código PHP:
echo "<td align='center'><select name='periodo' id='listper' onChange='igual_per();'>";
echo
"<option value=''>Elige una Opci&oacute;n</option>";

//Generamos el menu desplegable
while ($elementos=mysql_fetch_assoc($sel_periodos))
    {
       echo 
"<option value='"$elementos['periodo']." '>".$elementos['periodo']."</option>";
    }
echo 
"</select></td>"
En la cual obtengo valores de una base de datos, por medio de una función en javascript, quiero copiar el valor que elijan en esta en otra lista.

La función (pero creo que no funciona el getElementbyName :( ):
Código PHP:
function igual_per(){
    var 
peranio=null;
    var 
peranio=document.getElementsByName("periodo").defaultValue;
    
document.prof_asig_grupo.periodo.value=peranio;
    
document.prof_asig_grupo.periodo2.value=peranio;
    

Aquí la otra lista:

Código PHP:
echo "<td align='center'><select name='periodo2' id='listper'>";
echo
"<option value=''>Elige una Opci&oacute;n</option>";

//Generamos el menu desplegable
while ($elemento=mysql_fetch_assoc($sel_periodosd))
    {
       echo 
"<option value='"$elemento['periodo']." '>".$elemento['periodo']."</option>";
    }
echo 
"</select></td>"
O se tiene que hacer con ajax? Aunque prefiero hacer algo sencillo.

Si consideran los administradores que va en otro foro, con toda confianza pueden moverlo :)

Muchas gracias por su tiempo y respuestas :D
  #2 (permalink)  
Antiguo 08/09/2010, 12:28
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: copiar valor de select a otro

Con el método getElementsByName(), así como con el getElementsByTagName() y otros, se crea un array con todos los elementos que tienen dicho nombre. Por tanto, aunque sólo haya un elemento que se llame periodo en todo el documento, hay que referenciarlo según su posición en el array es decir, cambiar var peranio=document.getElementsByName("periodo").defa ultValue; por var peranio=document.getElementsByName("periodo")[0].defaultValue.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 08/09/2010, 12:33
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: copiar valor de select a otro

Hola

Prueba con esto
Código Javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  2.    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  6. <title>Pasar elementos de una lista a otra</title>
  7. <style type="text/css">
  8. select {width:80px}
  9. </style>
  10. <script type="text/javascript">
  11. <!--
  12. function pasar1() {
  13.     var obj = document.forms.prueba.sel1;
  14.     if (obj.selectedIndex==-1) return;
  15.   for (var i=0; opt=obj.options[i]; i++)
  16.     if (opt.selected) {
  17.         var valor=opt.value; // almacenar value
  18.         var txt=obj.options[i].text; // almacenar el texto
  19.         obj.options[i]=null; // borrar el item si está seleccionado
  20.     var obj2 = document.forms.prueba.sel2;
  21.     var opc = new Option(txt,valor);   
  22. //alert(opc);
  23.         eval(obj2.options[obj2.options.length]=opc);   
  24.   }
  25. }
  26.  
  27.  
  28.  
  29. function pasar2() {
  30.     var obj = document.forms.prueba.sel2;
  31.     if (obj.selectedIndex==-1) return;
  32.   for (var i=0; opt=obj.options[i]; i++)
  33.     if (opt.selected) {
  34.         var valor=opt.value; // almacenar value
  35.         var txt=obj.options[i].text; // almacenar el texto
  36.         obj.options[i]=null; // borrar el item si está seleccionado
  37.     var obj2 = document.forms.prueba.sel1;
  38.         var opc = new Option(txt,valor);
  39. //alert(opc);
  40.         eval(obj2.options[obj2.options.length]=opc);
  41.   }
  42. }
  43.  
  44.  
  45.  
  46. function ini(){
  47.     window["sel_opc"] = new Array();
  48.     var dato = document.forms.prueba.sel1.options;
  49.   for (var i = 0, total = dato.length; i < total; i ++)
  50.     window["sel_opc"][i] = dato[i].selected;
  51.     //alert(sel_opc);
  52. }
  53.  
  54. function ctrMays(){
  55.     var dato = document.forms.prueba.sel1.options;
  56.    for (var i = 0, total = dato.length; i < total; i ++)
  57.      if (dato[i].selected)
  58.     sel_opc[i] = !sel_opc[i];
  59.    for (var i = 0, total = dato.length; i < total; i ++)
  60.     dato[i].selected = sel_opc[i];
  61.     //alert(sel_opc);
  62. }
  63. -->
  64. </script>
  65. </head>
  66. <body onload="ini()">
  67. <table>
  68. <tr>
  69. <td>Origen</td>
  70. <td></td>
  71. <td>Destino</td>
  72. </tr>
  73. <tr>
  74. <td>
  75. <form name="prueba" >
  76. <select name="sel1" id="sel1" multiple="multiple"  size="5">
  77. <option value="3">Tres</option>
  78. <option value="4">Cuatro</option>
  79. <option value="5">Cinco</option>
  80. </select>
  81. </td>
  82. <td>
  83. <input type="button" value="Pasar >>" onclick="pasar1()" /><br />
  84. <input type="button" value="Pasar <<" onclick="pasar2()" />
  85. </td>
  86. <td>
  87. <select name="sel2" id="sel2" multiple="multiple" size="5">
  88. <option value="1">Uno</option>
  89. <option value="2">Dos</option>
  90. </select>
  91. </td>
  92. </tr>
  93. </table>
  94. </body>
  95. </html>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #4 (permalink)  
Antiguo 09/09/2010, 09:29
Avatar de venom_mau  
Fecha de Ingreso: julio-2009
Mensajes: 152
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: copiar valor de select a otro

Intenté tu opción _cronos2 pero nada.

Usando las funciones:
Código PHP:
function igual_per(){
 var 
obj document.forms.prof_asig_grupo.periodo;
* * if (
obj.selectedIndex==-1) return;
* for (var 
i=0opt=obj.options[i]; i++)
* * if (
opt.selected) {
* * * * var 
valor=opt.value// almacenar value
* * * * var txt=obj.options[i].text// almacenar el texto
* * * * obj.options[i]=null// borrar el item si está seleccionado
* * var obj2 document.forms.prof_asig_grupo.periodo2;
* * var 
opc = new Option(txt,valor);* * 
//alert(opc);
* * * * eval(obj2.options[obj2.options.length]=opc);* * 
* } 
}

function 
igual_per2(){

* * var 
obj document.forms.prof_asig_grupo.periodo2;
* * if (
obj.selectedIndex==-1) return;
* for (var 
i=0opt=obj.options[i]; i++)
* * if (
opt.selected) {
* * * * var 
valor=opt.value// almacenar value
* * * * var txt=obj.options[i].text// almacenar el texto
* * * * obj.options[i]=null// borrar el item si está seleccionado
* * var obj2 document.forms.prof_asig_grupo.periodo;
* * * * var 
opc = new Option(txt,valor);
//alert(opc);
* * * * eval(obj2.options[obj2.options.length]=opc);
* } 


Y en mi formulario llamándolas con el evento onChange, logro que me copie los valores, pero lo curioso es que en el primer select, por ejemplo, selecciono "1", me lo pone en el segundo, pero su primera opción de éste que es Elige una opción, se elimina.

Luego selecciono "2", pasa lo mismo, pero ahora el elemento "1" aparece hasta abajo de las opciones del primer select.

Me explico? Por qué pasa esto?

Última edición por venom_mau; 09/09/2010 a las 09:37 Razón: Modifiqué el script, funciona pero con errores.
  #5 (permalink)  
Antiguo 10/09/2010, 12:23
Avatar de venom_mau  
Fecha de Ingreso: julio-2009
Mensajes: 152
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: copiar valor de select a otro

He modificado la funcion así:
Código PHP:
* * var obj document.forms.prof_asig_grupo.periodo;
    var 
obj2 document.forms.prof_asig_grupo.periodo2;
//if (obj.selectedIndex==-1) return;
    
var dato=obj.selectedIndex;
    
//var per=obj.options[dato]
for (var i=0per=obj.options[i]; i++){
    if(
per.selected){
      
obj2.options[i]=per;
     }

Ahora logro que el valor que selecciono en la primer lista me lo pase a la segunda, pero la primera se queda sin valor

Alguna idea?
  #6 (permalink)  
Antiguo 10/09/2010, 12:53
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: copiar valor de select a otro

Hola

Pero colega, comenta esta línea en ambas funciones
Cita:
obj.options[i]=null; // borrar el item si está seleccionado
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 13/09/2010, 12:41
Avatar de venom_mau  
Fecha de Ingreso: julio-2009
Mensajes: 152
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: copiar valor de select a otro

Lo solucioné provisionalmente así:

Código PHP:

function igual_per(){

* * var 
obj document.forms.prof_asig_grupo.periodo;
    var 
obj2 document.forms.prof_asig_grupo.periodo2;
    var 
per=obj.options.length;
     
  for (var 
i=0i<=peri++){

    
    if(
obj.options[i].selected){
    
    var 
pasa=obj.selectedIndex;

    
obj2.selectedIndex=pasa;

     }
  }


Quizá difiera un poco en el primer planteamiento que hice, pero me copia el elemento que selecciono en una primer lista en la segunda.

Saludos y gracias por las ideas y comentarios :)

Etiquetas: copiar, select
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 21:34.