Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-01-2005
smendo smendo is offline
Registrado
 
Registrado: nov 2004
Posts: 8
Poder: 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
  #2  
Antiguo 19-01-2005
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
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/articul....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/articul....php?manual=40)
donde te explican que desde el popup se puede hacer "window.opener.inicializaCampos()"
__________________
todo el mundo debe creer en algo... yo creo que voy a tomarme otra copa.
Responder Con Cita
  #3  
Antiguo 19-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por smendo
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
Responder Con Cita
  #4  
Antiguo 24-01-2005
smendo smendo is offline
Registrado
 
Registrado: nov 2004
Posts: 8
Poder: 0
smendo Va por buen camino
Thumbs up mcuhas gracias

Muchas gracias de nuevo. Duda resuelta !
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:06:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi