PDA

Ver la Versión Completa : paso de variables con javascript


smendo
19-01-2005, 14:30:25
Hola a todos/as

En una aplicación que estoy desarrollando, desde un enlace se abre un popup que muestra una serie de datos los cuales pueden ser devueltos (también a través de un enlace) a un campo de texto de un formulario en la página origen.

El problema es el siguiente. Se da el caso que a ese popup se accede desde distintas paginas ¿Como puedo utilizar la pagina popup para que devuelva el valor seleccionado a las distintas páginas de origen segun el caso?

Creo que la solución se obtiene pasando los valores del nombre de la pagina, el nombre del formulario dentro la pagina y el nombre del campo del formulario a traves del enlace que abre el popup para su uso en la funcion que dentro del popup me devuelve el dato seleccionado al formulario.

Esa es mi idea pero no ha funcionado. Los valores han sido pasados correctamente a la funcion pero cuando intento asignar el valor al campo del formulario falla.

Adjunto el borrador de funcion que desde el popup devuelve el dato:

function seleccionar(nomform,campoform,codigo)
{
formulario = opener.document.getElementById(nomform);
expresion=formulario+'.'+campoform;
expresion.value = codigo;
close();
}

Este es el codigo que he probado ( que conste que los valores de campoform y nomform han sido testeados y contienen los valores correctos) pero el valor de expresion me sale 'undefined' y no se vuelca nigun dato.

Hay una alternativa que sí funciona y que es la siguiente:

function seleccionar(codigo)
{
formulario = opener.document.getElementById('nombre_formulario');
formulario.'nombre_campo'.value = codigo;
close();
}

Pero claro es necesario particularizar la funcion para cada pagina de origen, que también podría hacerse... a lo mejor... pero no lo veo una solución práctica ya que tendría que tener tantas copias del popup como enlaces que apuntaran hacia él.... una chapuza vamos.

Si alguien tiene alguna idea estaría agredecido de escucharla. Muchas gracias.

ruina
19-01-2005, 18:10:08
mmmm si no lo he entendido mal creo que lo que la solución es llamar a una función definida en el opener, es decir, en lugar de modificar desde el popup los controles de la ventana opener lo que deberias hacer es llamar a una función "callback" pasando, por ejemplo, los valores de ese popup.

te recomiendo esta lectura: http://www.desarrolloweb.com/articulos/1076.php?manual=40 , concretamente al capítulo "Cómo tener acceso a variables y funciones que estén en otra ventana." ( http://www.desarrolloweb.com/articulos/1099.php?manual=40)
donde te explican que desde el popup se puede hacer "window.opener.inicializaCampos()"

roman
19-01-2005, 21:57:22
function seleccionar(nomform,campoform,codigo)
{
formulario = opener.document.getElementById(nomform);
expresion=formulario+'.'+campoform;
expresion.value = codigo;
close();
}


Intenta cambiar la línea en rojo por:

expresion = eval('formulario.' + campoform);

Aunque también debería funcionar así:

expresion = formulario[campoform];

// Saludos

smendo
24-01-2005, 08:41:50
Muchas gracias de nuevo. Duda resuelta ! :cool: