Foros del Web » Programando para Internet » Javascript »

Recoger datos de un select

Estas en el tema de Recoger datos de un select en el foro de Javascript en Foros del Web. Hola, he encontrado este código en una web, y funciona bien, pero lo que pretendo es usarlo en un pop up y que al cerrarse ...
  #1 (permalink)  
Antiguo 25/08/2006, 19:06
 
Fecha de Ingreso: agosto-2006
Mensajes: 16
Antigüedad: 18 años, 3 meses
Puntos: 0
Recoger datos de un select

Hola,
he encontrado este código en una web, y funciona bien, pero lo que pretendo es usarlo en un pop up y que al cerrarse aparezcan los valores seleccionados del select de la derecha en un input de la página "padre". Mi problema es que no se ni como enviar ni como recoger esos datos.

Un enlace a un ejemplo de qué hace el código: tresuvesdobles. cssboulevar.com.ar/codigos/ver.php?id=114

El código:
Código:
<html>
<head>
<!-- Copiar dentro del tag HEAD -->
<script LANGUAGE="JavaScript">

<!--
sortitems = 1; 

function move(fbox,tbox) {
for(var i=0; i<fbox.options.length; i++) {
if(fbox.options[i].selected && fbox.options[i].value != "") {
var no = new Option();
no.value = fbox.options[i].value;
no.text = fbox.options[i].text;
tbox.options[tbox.options.length] = no;
fbox.options[i].value = "";
fbox.options[i].text = "";
   }
}
BumpUp(fbox);
if (sortitems) SortD(tbox);
}
function BumpUp(box)  {
for(var i=0; i<box.options.length; i++) {
if(box.options[i].value == "")  {
for(var j=i; j<box.options.length-1; j++)  {
box.options[j].value = box.options[j+1].value;
box.options[j].text = box.options[j+1].text;
}
var ln = i;
break;
   }
}
if(ln < box.options.length)  {
box.options.length -= 1;
BumpUp(box);
   }
}

function SortD(box)  {
var temp_opts = new Array();
var temp = new Object();
for(var i=0; i<box.options.length; i++)  {
temp_opts[i] = box.options[i];
}
for(var x=0; x<temp_opts.length-1; x++)  {
for(var y=(x+1); y<temp_opts.length; y++)  {
if(temp_opts[x].text > temp_opts[y].text)  {
temp = temp_opts[x].text;
temp_opts[x].text = temp_opts[y].text;
temp_opts[y].text = temp;
temp = temp_opts[x].value;
temp_opts[x].value = temp_opts[y].value;
temp_opts[y].value = temp;
      }
   }
}
for(var i=0; i<box.options.length; i++)  {
box.options[i].value = temp_opts[i].value;
box.options[i].text = temp_opts[i].text;
   }
}
// -->
</script>
</head>

<body>
<!-- Copiar dentro del tag BODY -->

<form ACTION=otra_web.php METHOD="POST">
  <table border="0">
    <tr>
      <td><select multiple size="5" name="list1">
        <option value="11"> item 1.1 </option>
        <option value="12"> item 1.2 </option>
        <option value="13"> item 1.3 </option>
      </select></td>
      <td><input type="button" value="   &gt;&gt;   "
      onclick="move(this.form.list1,this.form.list2)" name="B1"><br>
      <input type="button" value="   &lt;&lt;   "
      onclick="move(this.form.list2,this.form.list1)" name="B2"> </td>
      <td><select multiple size="5" name="list2">
        <option value="21"> item 2.1 </option>
        <option value="22"> item 2.2 </option>
        <option value="23"> item 2.3 </option>
      </select></td>
    </tr>
  </table>
<input type=submit value="enviar" name="enviar">
</form>

</body>
</html>
Podría echarme alguien una mano? (espero que al cuello no :P)

Muchas gracias,

Saludos.
  #2 (permalink)  
Antiguo 26/08/2006, 00:02
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 21 años, 4 meses
Puntos: 21
De acuerdo

checa esta liga te podra ayudar
http://www.desarrolloweb.com/articulos/1087.php
saludos
__________________
gerardo
  #3 (permalink)  
Antiguo 26/08/2006, 07:18
 
Fecha de Ingreso: agosto-2006
Mensajes: 16
Antigüedad: 18 años, 3 meses
Puntos: 0
Me explique mal

Veo que me explique mal. Mi problema no es pasar los datos de un pop up a la pagina base. El problema que yo tengo es que no se como recoger los datos del select multiple de la derecha para despues poder enviarlos a la pagina padre. Lo unico que conseguí es que me pase la opcion que esta seleccionada, pero yo quiero pasarlas todas.

intente hacer algo con este código, para hacer pruebas:

Código:
function funcion()
 {
     var texto="";
     for(var i=0;i<document.forms[0].list2.lenght;i+1){
  texto+='número de opción elegida= '+i+'\n';
   texto+='value de la opción = '+document.forms[0].list2.options[i].value+'\n';
  texto+='texto de la opción= '+document.forms[0].list2.options[i].text;
  }
  alert(texto);
 }
La llamo con un onsubmit desde el formulario, pero la ventana del alert sale vacia a no ser que se haya seleccionado algo en el select.

Como puedo hacer para enviar todas las opciones sin falta de que esten seleccionadas?
  #4 (permalink)  
Antiguo 26/08/2006, 08:08
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 20 años, 1 mes
Puntos: 4
holas,

Cita:
function validar(f){
var z=0
var valor=new Array();
s2=f['list2'];
for (x=0;x<s2.length;x++){
if(s2[x].selected==true){
valor[z]=s2[x].value;
z++;
}
}
alert(valor.toString());
}
utiliza un array para almacenar los valores seleccionados (es mas facil si se trata de muchos).

saludos
__________________
by Capitán Buscapina
.
  #5 (permalink)  
Antiguo 26/08/2006, 08:40
 
Fecha de Ingreso: agosto-2006
Mensajes: 16
Antigüedad: 18 años, 3 meses
Puntos: 0
No lo entiendo muy bien

Hola, muchas gracias por responder. Tengo un par de dudas:

- que se le pasa a la funcion? (que es f)
-lo que tu has puesto e spara los valores seleccionados, yo quiero todos los valores(no solo los seleccionados), que tendria que quitar esta linea?

Código:
if(s2[x].selected==true){

Gracias otra vez.
  #6 (permalink)  
Antiguo 26/08/2006, 09:52
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 20 años, 1 mes
Puntos: 4
Cita:
Iniciado por AiLaa Ver Mensaje
Hola, muchas gracias por responder. Tengo un par de dudas:

- que se le pasa a la funcion? (que es f)
ups!!!, se me olvido comentar que se le pasa como parametro el formulario (no el nombre sino el objeto, en concreto sería validar(this.form) )


Cita:
Iniciado por AiLaa Ver Mensaje
-lo que tu has puesto e spara los valores seleccionados, yo quiero todos los valores(no solo los seleccionados), que tendria que quitar esta linea?

Código:
if(s2[x].selected==true){
exacto
quedaría así:
Cita:
function validar(f){
var valor=new Array();
s2=f['list2'];
for (x=0;x<s2.length;x++){
valor[x]=s2[x].value;
}
alert(valor.toString());
}
reitero lo mencionado en el otro post, los datos se guardan en un array (que se llama valor) para manipularlo mejor (a mi gusto) pero eso se puede cambiar por una variable que se vaya concatenando.

saludos
__________________
by Capitán Buscapina
.
  #7 (permalink)  
Antiguo 27/08/2006, 11:44
 
Fecha de Ingreso: agosto-2006
Mensajes: 16
Antigüedad: 18 años, 3 meses
Puntos: 0
No va de esta :P

Bueno, yo he puesto voluntad y todo d emi parte, pero no lo consigo

he intentado usar el codigo de antes con tu funcion. Exactamente la linea ke pongo en el form es esta:

Código:
<form name=paso ACTION=prueba_paso_post.php METHOD="POST" onsubmit="return validar(this.form)";>
tambien probe con:

Código:
<form name=paso ACTION=prueba_paso_post.php METHOD="POST" onsubmit="return validar(this.form)";>
Pero el alert no sale. Un amigo me dijo ke si no estaban "selected" las opciones no se podian recoger, es eso cierto?(de hecho cuando hay una seleccionada si ke se envia, pero solo una)

La consola de javascript de mozilla firefox dice lo siguiente:

Error: f has no properties

A mi se me acabaron ya las ideas hace mucho, alguna idea por ahi?Estoy un poco deskiciada ya :P

Gracias por vuestra paciencia y tiempo.

Última edición por AiLaa; 27/08/2006 a las 11:54
  #8 (permalink)  
Antiguo 14/04/2008, 16:31
 
Fecha de Ingreso: marzo-2007
Mensajes: 3
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Recoger datos de un select

Bueno una opcion que es la que yo utilizo, es que si voy a recorrer el select en el submit, solo para crear un array y luego recoger ese array, pues mejor lo recorro seleccionando todas las opciones, de esta forma los recojo en el post de la forma tradicional...

Cita:
function validar(f){
s2=f['list2'];
for (x=0;x<s2.length;x++){
s2[x].selected = true;
}
}

Última edición por dj_truco; 14/04/2008 a las 16:31 Razón: error en el codigo que escribi
  #9 (permalink)  
Antiguo 15/04/2008, 06:22
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 9 meses
Puntos: 772
Re: Recoger datos de un select

El mensaje original es de hace más de un año. Por favor, no reviváis temas tan antiguos.

Saludos,
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 18:38.