Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    28

    capire in quale input inserire il valore preso dal popup

    Ciao a tutti,
    spiego in poche parole quello che sto cercando di fare e poi vi posto il codice.

    Io ho una form con all'interno una select che con la proprietà onchange - open apre un pop up con all'interno un'altra form.
    Completata questo seconda form prendo un dato inserito in questa seconda finestra e lo faccio comparire in un campo input adiacente alla mia select nella pagina padre (la pop up viene chiusa).
    Ora se io dovessi fare questa cosa solo una volta non avrei problemi ricerco per id il mio input e lo faccio compilare (l'ho gia fatto e funziona).
    Il fatto è che io di queste select, tramite un bottone, ne posso aggiungere quante me ne servono e tutte aprono il pop up con la form che alla chiusura deve restituirmi nella pagina padre, all'input adiacente alla select, il dato che io voglio.

    Spiegando in modo più esplicito nel pagina padre potrei avere da una a n di queste righe:

    select id=c1 input id=d1
    select id=c2 input id=d2
    ......
    select id=cn input id=dn

    le select cn mi aprono il pop up e gli input dn devono essere riempiti dal pop up.
    Il mio problema è che non riesco a capire che cosa passare alla funzione window.opener.document.getElementsById('d?').value ='valore';

    Io ho pensato a questo ciclo nella pagina pop up che però non funziona:

    for(var i=1; window.opener.document.getElementsById('d'+i).valu e!=''; i++);

    window.opener.document.getElementsById('d'+i).valu e='valore';

    Praticamente passo i vari id d1, d2, d3, fin quando non trovo quello vuoto, che cioè ancora non è stato completato, e poi gli do il valore però questo ciclo for non funziona.
    Forse lo scrivo in maniera sbagliata o bisogna fare un giro più lungo per fare quello che voglio fare.

    Per caso qualcuno ha qualche idea su come si possa fare questa cosa?
    Spero di essermi spiegata abbastanza bene.

    Grazie!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Secondo me non sapendo quanti input/select avrai nella pagina padre devi nella popup "contare" i nodi del documento padre (operazione delicata e complessa) documentati qui
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Lascia perdere il for
    Seguirei un' altra strada: bisogna passare alla pop-up quella n che accompagna "c" e "d" negli ID delle SELECT e degli INPUT aggiunti.
    Ma cosa fa quel bottone che "ne aggiunge"? Apre dei display: none; o li crea dinamicamente?

    Io, nell' ipotesi di una dinamica, ho buttato giù questo modellino (poi chiaramente ti liberi degli alert):
    codice:
    <html>
    <head><title>Dynamic IDs</title>
    
    <script type="text/javascript">
     
    function launch(x){
     alert("paramentro passato alla funzione: \tx = " + x);
    
     frm=window.open('', '', 'width=480');
     frm.document.open();
     frm.document.writeln('<html><body><form>
    ');
     frm.document.writeln('<input name="f' + x + '" value="" type="text">');
     frm.document.writeln('<input value="Send" type="button" onClick=\\'alert("ok anche nella pop-up \tx = ' + x + '"); '+
                          'window.opener.document.getElementById("d' + x + '").value=f' + x + '.value; '+
                          'window.close();\\'>');
    
     frm.document.writeln('</form></body></html>');
     frm.document.close()
    
     }
    
    </script>
    
    </head>
    <body bgcolor="#900000" text="#E3E3E3">
    
    
    
    <div align="center">
    
     <table width="520"><tr>
      <td>
    <script type="text/javascript">
    
    var n = 7;
    
     document.write(
        '\n<select id="c' + n + '" onChange=\\'launch(n);\\'> '+
        '\n <option>Tina                                    '+
        '\n <option>Enzo                                    '+
        '\n <option>Paola                                   '+
        '\n</select> '+
        '\n<input id="d' + n + '" value="" type="text">     '
       );
    </script>
        <hr>
      </td></tr>
     </table>
    
    </div>
    
    
    </body>
    </html>
    Se cambi Valore alla var n = 7; nell' ipotesi di una nuova e diversa SELECT, vedi che anche la pop-up lo viene messa al corrente di n .

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    28
    Ho seguito il consiglio di cavicchiandrea pensando un attimo alla gerarchia dei vari nodi e alla fine con queste poche righe sono riuscita a fare quello che volevo.

    var padre = window.opener.document.getElementById('tabella'); //la tabella nella pagina padre dove ho i miei campi c e d

    var figli = padre.getElementsByTagName("input"); // così ho l'elenco dei miei campi d che sono degli input

    var i = figli.length; // conto quanti sono

    figli[i-1].value='valore'; // prendo l'ultimo input che sarà quello che devo compilare e gli do il valore che voglio

    Così funziona!
    E mi sembra anche abbastanza semplice.

    Enzaccio ti ringrazio comunque per la disponibilità!

    Ciao ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.