• User

    Passaggio dati da piu campi di testo da child a parent

    Ciao a tutti!
    Non riesco a trovare una soluzione al mio problema! Vi spiego: con il codice sottostante passo una variabile (contenuta in una imput text) da un popup alla pagina madre esempio.php, solamente che io vorrei passare più campi e non solo uno.
    Faccio un esempio, nel popup ho un form con i campi imput text1, imput text2, imput text3 e voglio che questi tre campi vadano a riempire, nella pagina madre, i campi text area1 text area2 e text area3...come posso fare?

    VI incollo il codice delle due pagine incriminate:

    POPUP

    <script language="javascript">
    function tornaValore() {
    
    window.opener.document.getElementById("val_ritornato").value = document.getElementById("val_da_tornare").value
    window.close()
    }
    </script>
    </head>
    <body>
    <br>
    Valore da ritornare: <input type="text" id="val_da_tornare"><input type="button" value="Torna il valore e chiudi!" onClick="tornaValore()">
    </body>
    
    ```e questa è la pagina esempio.php
    

    <title>Documento senza titolo</title>
    <script language="javascript">
    function MM_openBrWindow(theURL,winName,features) { //v2.0
    window.open(theURL,winName,features);
    }
    </script>
    </head>

    <body>
    <a href="popup.html" onClick="MM_openBrWindow('popup.html', 'nuovaFinestra','width=400,height=600'); return false;" onKeyPress="MM_openBrWindow('popup.html', 'nuovaFinestra','width=400,height=400'); return false;" title="Esempio di pop-up accessibile - Link interno - Nuova finestra">Apri
    il pop-up</a><br>

    <textarea id="val_ritornato" name="prova" cols="100" rows="5" ></textarea>

    </body>

    
    Grazie anticipatamente,
    Fede

  • Super User

    Ciao Fede717,
    Basta aggiungere i campi text e textarea e il comando javascript:

    Popup

    
    <script language="javascript">
    function tornaValore() {
    
    **window.opener.document.getElementById("val_ritornato1").value = document.getElementById("val_da_tornare1").value;
    window.opener.document.getElementById("val_ritornato2").value = document.getElementById("val_da_tornare2").value;
    window.opener.document.getElementById("val_ritornato3").value = document.getElementById("val_da_tornare3").value;**
    window.close();
    }
    </script>
    </head>
    <body>
    <br>
    Valore da ritornare 1: <input type="text" id="val_da_tornare1">
    Valore da ritornare 2: <input type="text" id="val_da_tornare2">
    Valore da ritornare 3: <input type="text" id="val_da_tornare3">
    
    <input type="button" value="Torna il valore e chiudi!" onClick="tornaValore()">
    </body>
    
    

    esempio.php

    
    <textarea id="val_ritornato1" name="prova1" cols="100" rows="5" ></textarea>
    <textarea id="val_ritornato2" name="prova2" cols="100" rows="5" ></textarea>
    <textarea id="val_ritornato3" name="prova3" cols="100" rows="5" ></textarea>
    
    

  • User

    Grazie inifinite per la risposta 😄
    Un'altra domanda.. ma se volessi mettere al posto del campo di testo un gruppo di pulsanti di scelta... come posso fare? Perchè per far si che il valore ritorni alla finestra madre dovrei asssegnare a tutti i pulsanti di scelta uno stesso id...ma verrebbe ritornato sempre lo stesso valore :mmm:
    Sbaglio?:?


  • Super User

    Per pulsante di scelta intendi i radiobutton o i checkbox?


  • User

    @ayrton2001 said:

    Per pulsante di scelta intendi i radiobutton o i checkbox?

    Ciao, intendo i radiobutton 😉
    Grazie..
    Federico


  • Super User

    Gli id devono essere sempre diversi in una pagina, ma stesso name per il radiobutton

    
    <script language="javascript">
    function tornaValore() {
    
    window.opener.document.getElementById("val_ritornato1").value = document.getElementById("val_da_tornare1").value;
    window.opener.document.getElementById("val_ritornato2").value = document.getElementById("val_da_tornare2").value;
    window.opener.document.getElementById("val_ritornato3").value = document.getElementById("val_da_tornare3").value;
    
    **for (counter = 0; counter < document.getElementsByName("myradio").length; counter++){ 
        if (document.getElementsByName("myradio")[counter].checked){ 
            window.opener.document.getElementById("radio_ritornato").value = document.getElementById("val_da_tornare3").value;
        } 
    } 
    ** 
    window.close();
    }
    </script>
    </head>
    <body>
    <br>
    Valore da ritornare 1: <input type="text" id="val_da_tornare1">
    Valore da ritornare 2: <input type="text" id="val_da_tornare2">
    Valore da ritornare 3: <input type="text" id="val_da_tornare3">
    **Radiobutton da tornare: 
    <input type="radio" id="myradio1" name="myradio" value="si" />
    <input type="radio" id="myradio2" name="myradio" value="no" />
    <input type="radio" id="myradio3" name="myradio" value="forse" />**
    
    <input type="button" value="Torna il valore e chiudi!" onClick="tornaValore()">
    </body>
    
    

  • User

    :mmm:
    Perdonami ma non ho capito come funziona la cosa.. :mmm:


  • Super User
    
    for (counter = 0; counter < document.getElementsByName("myradio").length; counter++){ 
        if (document.getElementsByName("myradio")[counter].checked){ 
            window.opener.document.getElementById("radio_ritornato").value = document.getElementById("val_da_tornare3").value;
        } 
    } 
    
    

    Per ogni radiobutton con name myradio, verifica se è checked ed in tal caso ritorna il valore selezionato.

    
    <input type="radio" id="myradio1" name="myradio" value="si" />
    <input type="radio" id="myradio2" name="myradio" value="no" />
    <input type="radio" id="myradio3" name="myradio" value="forse" />
    
    

    Sono i 3 radiobutton che devono avere stesso attributo name


  • User

    :mmm:
    Ho provato ma non funziona...

    questp è il popup:

    <script language="javascript">
    function tornaValore() {
    
    window.opener.document.getElementById("val_ritornato1").value = document.getElementById("val_da_tornare1").value;
    window.opener.document.getElementById("val_ritornato2").value = document.getElementById("val_da_tornare2").value;
    window.opener.document.getElementById("val_ritornato3").value = document.getElementById("val_da_tornare3").value;
    
    for (counter = 0; counter < document.getElementsByName("myradio").length; counter++){ 
        if (document.getElementsByName("myradio")[counter].checked){ 
            window.opener.document.getElementById("radio_ritornato").value = document.getElementById("val_da_tornare4").value;
        } 
    } 
     
    window.close();
    }
    </script>
    </head>
    <body>
    <br>
    Valore da ritornare 1: <input type="text" id="val_da_tornare1">
    Valore da ritornare 2: <input type="text" id="val_da_tornare2">
    Valore da ritornare 3: <input type="text" id="val_da_tornare3">
    Radiobutton da tornare: 
    <input type="radio" id="myradio1" name="val_da_tornare4" value="si" />
    <input type="radio" id="myradio2" name="val_da_tornare4" value="no" />
    <input type="radio" id="myradio3" name="mval_da_tornare4" value="forse" />
    
    <input type="button" value="Torna il valore e chiudi!" onClick="tornaValore()">
    </body>
    ```e questa è la pagina esempio.php:
    
    

    <textarea id="val_ritornato1" name="prova1" cols="100" rows="5" ></textarea>
    <textarea id="val_ritornato2" name="prova2" cols="100" rows="5" ></textarea>
    <textarea id="val_ritornato3" name="prova3" cols="100" rows="5" ></textarea>

    <textarea id="radio_ritornato4" name="radio_ritornato" cols="100" rows="5" ></textarea>

    
    Sbaglio qualcosa? :rollo:
    Grazie...

  • Super User

    Ciao Fede717,
    attento ai nomi.
    O chiami i radiobutton myradio o li chiami val_da_tornare4.


  • User

    Anche mettendo i nomi giusti, lo script non funziona... Non mi torna i valori (se seleziono il primo radio, mi dovrebbe tornare il valore del primo radio selezionato, se seleziono il secondo mi torna il valore del secondo e così via..) in uno stesso campo di testo, in questo caso "radio_ritornato"... :mmm:


  • Super User

    Strano, a me funziona.
    Mi riposti l'ultimo codice da te provato?


  • User

    Certamente,
    questo è il popup:

    <script language="javascript">
    function tornaValore() {
    
    window.opener.document.getElementById("val_ritornato1").value = document.getElementById("val_da_tornare1").value;
    window.opener.document.getElementById("val_ritornato2").value = document.getElementById("val_da_tornare2").value;
    window.opener.document.getElementById("val_ritornato3").value = document.getElementById("val_da_tornare3").value;
    
    for (counter = 0; counter < document.getElementsByName("myradio").length; counter++){ 
        if (document.getElementsByName("myradio")[counter].checked){ 
            window.opener.document.getElementById("radio_ritornato").value = document.getElementById("myradio").value;
    
        } 
        
    } 
     
    window.close();
    }
    </script>
    </head>
    <body>
    <br>
    Valore da ritornare 1: <input type="text" id="val_da_tornare1">
    Valore da ritornare 2: <input type="text" id="val_da_tornare2">
    Valore da ritornare 3: <input type="text" id="val_da_tornare3">
    Radiobutton da tornare: 
    <input type="radio" id="myradio1" name="myradio" value="si" />
    <input type="radio" id="myradio2" name="myradio" value="no" />
    <input type="radio" id="myradio3" name="myradio" value="forse" />
    
    <input type="button" value="Torna il valore e chiudi!" onClick="tornaValore()">
    </body>
    ```e questa è la pagina esempio.php:
    
    

    <input name="val_ritornato" type="text" id="val_ritornato1" value="">
    <input name="val_ritornato" type="text" id="val_ritornato2" value="">
    <input name="val_ritornato" type="text" id="val_ritornato3" value="">
    <input name="radio_ritornato" type="text" id="radio_ritornato" value="">


  • Super User

    Si, c'è un errore. Corregi la riga in grassetto:

    
    for (counter = 0; counter < document.getElementsByName("myradio").length; counter++){ 
        if (document.getElementsByName("myradio")[counter].checked){ 
            window.opener.document.getElementById("radio_ritornato").value = document.getElementsByName("myradio")[counter].value;
    
        } 
    }
    
    

  • User

    Grazie infinite! 🙂
    Funziona...


  • User

    :mmm:
    Scusate se riesumo questo post, ma mi sono accorto che lo script "limita" il numero di radio a 4 opzioni.. se ne metto 5 lo script non funziona.. :mmm: sbaglio qualcosa io?
    Grazie anticipatamente,
    Fede


  • ModSenior

    Che ID hanno i 5 radio?
    Magari è solo un problema di ID.


  • User

    @marcocarrieri said:

    Che ID hanno i 5 radio?
    Magari è solo un problema di ID.

    da icone_0 a icone_3 ... se metto icone_4 non funziona, ovvero non chiude la finestra e passa i valori..:?
    Grazie...
    Fede