Foros del Web » Programando para Internet » Javascript »

No detecta change desde ventana hija

Estas en el tema de No detecta change desde ventana hija en el foro de Javascript en Foros del Web. Buenas tardes, La situación es la siguiente: Tengo un form con 2 inputText (id y nombre), al digitar en el textBox nombre algo como A* ...
  #1 (permalink)  
Antiguo 16/07/2012, 12:45
 
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panama
Mensajes: 551
Antigüedad: 20 años, 6 meses
Puntos: 8
Pregunta No detecta change desde ventana hija

Buenas tardes,

La situación es la siguiente: Tengo un form con 2 inputText (id y nombre), al digitar en el textBox nombre algo como A* se abre una popUp que muestra en una lista radioBotton el resultado de la consulta a la base de datos con el id y el nombre y al seleccionar alguno de ellos actualiza en el form principal los datos seleccionados. Hasta acá todo Ok.

El lío que tengo es que al suceder esto con jQuery no se activa el evento change que tengo definido para el campo id y así hacer otra serie de validaciones que debo hacer.

De ahí mi pregunta: cómo puedo detectar el cambio en el campo id cuando se actualiza desde una popUp?

De antemano Mil Gracias por su ayuda
__________________
El que no sabe y sabe que no sabe, es un ignorante...enseñémosle!. El que no sabe y se cree que sabe, es un necio... ¡ignorémosle!.
El que sabe y sabe que sabe, es un sabio... ¡sigámosle!.
  #2 (permalink)  
Antiguo 16/07/2012, 13:17
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 6 meses
Puntos: 1567
Respuesta: No detecta change desde ventana hija

No entiendo bien del todo, pero te dejo un modelo de como recibir variables desde hija a padre

padre.html
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>Padre</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <script type="text/javascript">
  7. <!--
  8. var nuevaVentana = null;
  9. function abrirNuevaVentana(){
  10. if ((nuevaVentana != null) && (nuevaVentana.closed == false)){
  11. if( nuevaVentana.closed == false )
  12. nuevaVentana.close();
  13. nuevaVentana = null;
  14. }
  15.  
  16. var abrirUrl = 'hija.html';
  17. var nombreVentana = 'NewWindow_' + new Date().getTime();
  18. var carcateristicasVentana ='width=1000px,height=700px';
  19.  
  20. nuevaVentana = window.open(abrirUrl, nombreVentana, carcateristicasVentana);
  21. if(parseInt(navigator.appVersion) >= 4){nuevaVentana.window.focus();}
  22.  
  23. if (nuevaVentana) {
  24.    var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
  25.    if (isChrome && nuevaVentana.parent) {
  26.        nuevaVentana.parent.blur();
  27.    }
  28.    nuevaVentana.focus();
  29. }
  30. }
  31.  
  32. function llamarFuncionEnHija(){
  33. if((nuevaVentana != null) && (nuevaVentana.closed == false)){
  34. if(parseInt(navigator.appVersion) >= 4){
  35. nuevaVentana.window.focus();
  36. }
  37. nuevaVentana.funcionEnHija('pasado desde parent');
  38. }else{
  39. alert('Abrir el popup primero');
  40. }
  41. }
  42. // -->
  43. </head>
  44. <button onclick="abrirNuevaVentana();">abrir pop</button>
  45. <button onclick="llamarFuncionEnHija();">Recibir resultados de función en hija</button>
  46. </body>
  47. </html>

hija.html
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>hija</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <script type="text/javascript">
  7. //<![CDATA[
  8. function funcionEnHija(valordesdeparent){
  9. alert(valordesdeparent + ' - ' +document.getElementById('prueba').value);
  10. }
  11. //]]>
  12. </head>
  13. Rellenar campo y llamar otra vez desde parent con 'Recibir resultados de función en hija'<br />
  14. sin cerrar esta ventana.
  15. <input type="text" value="" id="prueba"/>
  16. <input type="button" value="Cerrar" onclick="self.close()" />
  17. </body>
  18. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 16/07/2012, 13:56
 
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panama
Mensajes: 551
Antigüedad: 20 años, 6 meses
Puntos: 8
Respuesta: No detecta change desde ventana hija

Gracias emprear por tu respuesta.....

Voy a mirar el codigo que me enviaste, sin embargo te envio los codigos con los que estoy haciendo las pruebas

Codigo padre.html
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
>
<
html>
<
head>
    <
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <
title></title>
    <
script language="javascript" type="text/javascript" src="js/jquery.js"></script>
    <script>
        $().ready(function () {
            $("#id").change( function () {
                alert("LLEGO");
            });
        return false;
        });

    function buscar(nom) {
        var llega = "hija.php?nom="+nom.value;
        window.open(llega,"BUSCAR","fullscreen=no,status=no,dependent=yes, width=350, height=400,resizable=0,top=220,left=600");
    }
    </script>
</head>
<body>
    <form id="depe" name="depe">
        <td>Id: </td><td><input type="text" id="id" name="id" value="" /></td>
        <br>
        <td>Nombre: </td><td><input type="text" id="nombre" name="nombre" value="" onChange="buscar(this);" /></td>
    </form<
</body>
</html> 
Codigo hija.php
Código PHP:

<?
$arr
[0]["id"] = "1";
$arr[0]["nombre"] = "A1";
$arr[1]["id"] = "2";
$arr[1]["nombre"] = "A2";
$arr[2]["id"] = "3";
$arr[2]["nombre"] = "A3";

?>
<html>
    <head>
        <script language="javascript">
            function enviar(a,b) {
                opener.document.depe.id.value=a.value;
                opener.document.depe.nombre.value=b.value;
                window.close();
            }
        </script>
    </head>
    <body>
        <form>
            <table border="1">
                <tr><th>Id</th><th>Nombre</th></tr>
        <?php
            $w
=0;
            for(
$j=0$j<3$j++) {
                
$h=$w+1;
                echo 
"<td><input type='radio' name='x' onclick='enviar(this.form.c$w, this.form.c$h);'><input type='hidden' name='c$w' value='"$arr[$j]['id'] ."'>"$arr[$j]['id']."</td><td>";
                echo 
"<input type='hidden' name='c$h' value='"$arr[$j]['nombre'] ."'>"$arr[$j]['nombre'];
                
$w $w 2;
                echo 
"</TR>\n";
            }
        
?>
        </form>
    </body>
</html>
La idea es registrar algún cambio en la caja Nombre, ahí se abre la hija.php, seleccionar cualquier opción, se actualiza en la papá los datos y se debe ejecutar el código jQuery $("#id").change (function () { ..... es decir, debería aparecer el alert "LLEGO", pero pailas, no lo hace....


Mil Gracias
__________________
El que no sabe y sabe que no sabe, es un ignorante...enseñémosle!. El que no sabe y se cree que sabe, es un necio... ¡ignorémosle!.
El que sabe y sabe que sabe, es un sabio... ¡sigámosle!.
  #4 (permalink)  
Antiguo 17/07/2012, 15:12
 
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panama
Mensajes: 551
Antigüedad: 20 años, 6 meses
Puntos: 8
Respuesta: No detecta change desde ventana hija

Listo compañer@s, solucionado...

En la ventana hija antes de hacer el window.close() hay que incluir esto

window.opener.$("#id").change();

De esta manera sí hace el alert LLEGO

Ahora, si a alguien se le ocurre otra solución, se lo agradezco
__________________
El que no sabe y sabe que no sabe, es un ignorante...enseñémosle!. El que no sabe y se cree que sabe, es un necio... ¡ignorémosle!.
El que sabe y sabe que sabe, es un sabio... ¡sigámosle!.

Etiquetas: change, detecta, hija, input, ventanas
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 10:23.