Ver Mensaje Individual
  #1  
Antiguo 19-01-2005
smendo smendo is offline
Registrado
 
Registrado: nov 2004
Posts: 8
Reputación: 0
smendo Va por buen camino
paso de variables con javascript

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.
Responder Con Cita