Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19

Discussione: [JS] - Finestra madre

  1. #11
    Ti faccio un esempio pratico così magari riesco a farmi capire:

    Ho la pagina ciao.php all'interno di essa c'è un form con un campo testo, come ci clicco dentro mi si apre la popup, seleziona.php, in cui seleziono i destinatari e una volta premuto il submit mi inserisce i destinatari nel campo testo della pagina ciao.php.

    Il mio problema è che la popup seleziona.php può venir aperta da diverse pagine, non solo da ciao.php. Lei però fa sempre la stessa funzione: permette di selezionare i destinatari e li invia nel campo testo della pagina da cui è stata aperta.

    Ora sono stato chiaro?

    Scusate il mio italiano.

  2. #12
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da br1
    ... cosa intendi con invia i dati alla finestra madre
    Finalmente l'hai detto... quindi cerchi qualcosa di simile:

    <input type="button" value="Finito"
    onclick="opener.document.nomeForm.nomeCampo.value = this.campoCognome.value;">

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #13
    Si esatto. L'idea è proprio quella.
    Ma quindi adesso il form non deve più avere alcun action?
    Il mio campo nella popup è un radiobutton o un checkbox (devo ancora decidere) la stringa this.campoCognome.value va bene lo stesso?

    Se la pagina che apre la popup è composta da 2 frame la cosa cambia?
    Te l'ho chiedo xkè sono ancora indeciso sul layout.

    Grazie ciao

  4. #14
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Stando alle specifiche l'action e` obbligatoria, per cui ti conviene metterla. Ma puoi mettere
    action="#"

    La sintassi corretta per un campo di tipo text e` (se non vado errato)
    onclick="window.opener.document.nomeForm.nomeCampo.value = this.form.campoCognome.value;"

    per un campo radio (piu` di un campo conlo stesso nome):
    ... = this.form.NOMERADIO[i].value;

    per un campo checkbox (con nome univoco):
    ... = this.form.NOMECHECKBOX.value;

    dove la i sta per l'ordine del campo con lo stesso nome ([0] per il primo, [1] per il secondo, ...

    Ma a seconda di come e` fatto il form ci potrebbero essere delle sintassi leggermente diverse.


    Se ci sono frame nella chimante (sconsigliati!!), in teoria non dovrebbe cambiare, in pratica per esser sicuri occorre scrivere:
    window.opener.top.NOMEFRAME.document.NOMEFORM....
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #15
    Perchè se faccio una funzione, come la seguente, non mi visualizza tutto l'array cliente (cioè tutti i valori dei radiobutton), ma si ferma al primo, cioè a i=0?

    function reload() {
    var max=seleziona.cliente.length;
    for (i = 0; i < max; i++) {
    document.write(seleziona.cliente[i].value);
    }
    }

    Mentre se sostituisco la i con un valore numerico me lo mostra?

  6. #16
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Perche` document.write, in una pagina chiusa, sovrascrive la pagina (quindi dopo il primo .write(), il tuo script non esiste piu`).

    Usa invece un alert:
    alert(seleziona.cliente[i].value);
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #17
    Ma se invece di mettere:

    document.write(seleziona.cliente[i].value);


    metto:

    document.write(ciao+i);

    mi visualizza i ciao con ogni valore di i.

  8. #18
    br1 e Mich_ siete dei MITI!!!

    Ho finalmente risolto il mio problema.
    Per chiunque avesse il mio problema o volesse fare una cosa del genere ho creato questa funzioncina da inserire nella popup.

    function reload() {
    var max=seleziona.cliente.length;
    for (i = 0; i < max; i++) {
    if (seleziona.cliente[i].checked){
    selezionato = seleziona.cliente[i].value;
    }
    }
    opener.document.form.cliente_destinatario.value = selezionato;
    self.close();
    }

    Ovviamente io uso i radiobutton, ma se vedete i post di br1 e mich_ vedrete come fare per gli altri tipi di input.

    Seleziona è il nome del form della popup, cliente è il nome del campo radioButton.
    Form è il nome del form nella pagina madre e cliente_destinatario il nome del campo testo nella madre

    CIAO e grazie a tutti

  9. #19
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Sottoscrivo pienamente:
    br1, Xinod e Mich_ siete dei MITI!!!

    Ma... mi permetto di dare dei suggerimenti.

    Effettivamente un popup può modificare un oggetto del chiamante. Però, avendo avuto tempo fa, con IE, problemi a manipolare oggetti select del chiamante, uso oggi un aproccio diverso.
    In pratica, non manipolo oggetti del chiamante, ma delego l'azione richiamando una funzione del chiamante, passando eventualmente parametri, simulando così una chiamata di CallBack.
    A parte le spiegazioni che lasciano desiderare, lo ammetto , la faccenda funziona davvero bene.
    Lo pseudo codice è all'incirca:

    Se esiste opener allora
    Se esiste opener.funzione allora
    opener.funzione(parametri)

    Che non dà errore nè se il popup è chiamata in maniera diretta (operer non esiste), sia che nel chiamante non sia dichiarata la funzione di calback
    Pietro

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 © 2026 vBulletin Solutions, Inc. All rights reserved.