Foros del Web » Programando para Internet » Javascript »

Actualizar combo de hija a madre

Estas en el tema de Actualizar combo de hija a madre en el foro de Javascript en Foros del Web. Hola, ¿como puedo actualizar un combo (<select...) desde una página hija donde hago una select para actualirlo...? hago: window.opener.document.formulario.nombre.options[0].value="a"; window.opener.document.formulario.nombre.options[1].value="b"; ... pero... va a ser ...
  #1 (permalink)  
Antiguo 24/06/2005, 09:11
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
Pregunta Actualizar combo de hija a madre

Hola,
¿como puedo actualizar un combo (<select...) desde una página hija donde hago una select para actualirlo...?

hago:
window.opener.document.formulario.nombre.options[0].value="a";
window.opener.document.formulario.nombre.options[1].value="b";
...
pero... va a ser que no !

¿alguna ayudita?
gracias

j@n
  #2 (permalink)  
Antiguo 24/06/2005, 09:40
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola j@n

No entiendo a que te refieres con actualizar el combo. Con el código que has puesto se cambia el value de los option

Saludos,
  #3 (permalink)  
Antiguo 27/06/2005, 01:10
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
Información

Hola JavierB, intentaré explicar el problemilla que tengo...
imagina una página asp donde mediante una SELECT cargo un combo <select...
el usuario puede seleccionar cualquiera de los valores cargados....!

pero tambien puede añadir, borrar, modificar.... desde un botón; ese botón lanza una ventana hija donde tengo el mantenimiento de una tabla; y cuando el usuario finaliza el mantenimiento y pulsa cerrar debo actualizar la lista (<select...) que tengo en la página madre.



me he explicado algo mejor??
espero que sí ...

Gracias por su tiempo
j@n
  #4 (permalink)  
Antiguo 28/06/2005, 03:29
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
Pregunta ¿y este error?

He encontrado este ejemplo:

var field = window.opener.document.forms[0].combo;
field.options.length=0 ; // erases prior options. This works!
var group = new Array( "Select your city", "Kansas","New York","New Jersey","Boston","Houston" );
(*) field.options[0]=new Option(group[0],group[0],false,false);

pero al ejecutar (*), me dá este error: The server threw an exception

¿alguien sabe que significa?

Gracias
j@n
  #5 (permalink)  
Antiguo 28/06/2005, 03:39
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Qué tal,

con esto

window.opener.document.formulario.nombre.options[0].value="a";
window.opener.document.formulario.nombre.options[1].value="b";

cambias el atributo value de la opción pero no su texto. Para cambiar además el texto debes usar el atributo text

window.opener.document.formulario.nombre.options[0].text="a";
window.opener.document.formulario.nombre.options[1].text="b";

  #6 (permalink)  
Antiguo 28/06/2005, 03:47
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
Desacuerdo

Hola tunait,
he probado lo que dices y me dá un error javascript:
'window.opener.document.formulario.nombre.optons.0 ' no es un objeto

abro la ventana hija con un window.open; ¿tengo que abrir el popup con alguna característica especial para poder devolver resultados?


Espero vuestra ayuda....
Un saludo
j@n
  #7 (permalink)  
Antiguo 28/06/2005, 03:55
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Cita:
¿tengo que abrir el popup con alguna característica especial para poder devolver resultados?
...no. Te daba el mismo error cambiando el value?
  #8 (permalink)  
Antiguo 28/06/2005, 03:57
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
Desacuerdo no entiendo...

si hago :
alert (window.opener.document.formulario.nombre.lenght);
devuelve
undefined

Así que..... ¿¿algo tengo mal no??




..............................
j@n
  #9 (permalink)  
Antiguo 28/06/2005, 03:59
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
dale la vuelta a la h y a la t finales (length) y me cuentas
  #10 (permalink)  
Antiguo 28/06/2005, 04:06
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
uyyyyyy perdón... es que he cambiado tantas cosas tan deprisa... que ...!!
El .length funciona ok !

Creo que el problema está en el :
window.opener.document.formulario.nombre.length=0;
los .value y .text sí funcionan... o por lo menos veo el cambio en la página madre!

Sé que hay que inicializar el combo: ....length=0;
y que luego le doy el length con el total.... pero....
me dá error !!

q puedo hacer?
gracias por tu tiempo!
  #11 (permalink)  
Antiguo 28/06/2005, 04:12
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
hum.... no necesitas asignarle el total con length. Usa length = 0 para eliminar los actuales y luego le vas agregando y le quedará el length que le quede, pero no necesitas asignárselo como total.

Echa un ojo a este script que tengo aquí a ver si te sirve de referencia
http://javascript.tunait.com/javascr...asdependientes

Yá nos contarás
  #12 (permalink)  
Antiguo 28/06/2005, 04:55
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
nada....

sigo con problemas... veo en tu ejemplo que se actualizan las listas de un mismo formulario.
¿puede cambiar si se trata de ventanas popup (madre/hija)?

en tu ejemplo funciona... pero a mí me dá:
The server threw an exception.

simplemente quiero hacer:

window.opener.document.formulario.nombre.length=0;
window.opener.document.formulario.nombre.options[0]=new Option('-elija un campo-','-elija un campo-','defauldSelected');

También he probado cambiando formulario por forms[0] y... igual !!



....

gracias
j@n
  #13 (permalink)  
Antiguo 28/06/2005, 05:27
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
En tu lugar comenzaría por lograr que funcione dentro de un mismo documento hasta que des con el código que funciona correcto. Una vez hecho esto lo adaptas para trabajar entre ventanas madre e hija. si no siempre tendrás la duda de si es un problema de comunicación entre ventanas o del propio script.

Otro detalle... las pruebas las estás haciendo entre dos documento bajo un mismo sitio? (yá sea tu pc o en el servidor, pero que ambos estén en el mismo lado)

otro ... no sé si el tercer parámetro que estás usando existe. Que sepa una nueva opción lleva dos parámetros, value y texto

new Option(texto, valor)

No sé si hay un tercero posible

igual el valor que has puesto aquí es defauldSelected en vez de default

Si lees inglés mírate esto también a ver si te orienta
http://www.quirksmode.org/js/options.html
  #14 (permalink)  
Antiguo 28/06/2005, 05:54
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
Desacuerdo

- en la misma página funciona correctamente. Tengo otras páginas que usan listas dependientes: sin problemas.

- sí, es el mismo servidor. Ya me encontré con ese problema, en otro caso.!

- aún usando 2 parámetros... mal !

sigo peleándome con el temita.... si se te ocurre cualquier cosa....!
gracias de nuevo!
j@n
  #15 (permalink)  
Antiguo 28/06/2005, 06:56
j@n
 
Fecha de Ingreso: febrero-2004
Mensajes: 178
Antigüedad: 20 años, 2 meses
Puntos: 0
De acuerdo por fin...

¡Buscando buscando he encontrado la respuesta!

un ejemplo muy sencillo:

father.html
-----
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript"><!--
function openPopup(url) {
myPopup = window.open(url,'popupWindow','width=640,height=48 0');
if (!myPopup.opener)
myPopup.opener = window;
}
function copyForm() {
var i = document.forms[0].tipo.length;
var myNewOption = new
Option(myPopup.document.forms[0].myTextField.value, i);
document.forms[0].tipo.options[i] = myNewOption;
document.forms[0].tipo.selectedIndex = i;
myPopup.window.close();
return false;
}
//--></SCRIPT>
</HEAD>
<BODY>
<a href="javascript:openPopup('son.html')">Open Popup</a>
<FORM NAME="testForm" ACTION="nextPage.html">
<select name="tipo">
<option value="">--select--</option>
<option value="0">xxx</option>
<option value="1">yyy</option>
</select>
<input name="ok" value="Ok" type="submit" />
</FORM>
</BODY>
</HTML>
-----

son.html
-----
<HTML>
<HEAD>
</HEAD>
<BODY>
<FORM NAME="popupForm">
<INPUT TYPE="TEXT" NAME="myTextField">
<INPUT TYPE="BUTTON" VALUE="Submit" onClick="opener.copyForm()">
</FORM>
</BODY>
</HTML>
-----

El problema es que se debe actualizar el COMBO desde la página padre...

Voy a probar si funciona todo...!
Muchas gracias
j@n
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 13:56.