Newsgroup: it.comp.lang.javascript
Titolo: [help] Aggiornare i campi di un form da una finestra popup

Ciao a tutti.
Questo č il mio problema.
Per aggiornare un campo di testo attraverso un link presente in una finestra
popup utilizzo questo codice:
PAGINA PRINCIPALE
<input name="image" type="text" id="image" value="">
<input type=button onClick='targetitem =document.forms[0].image;
 upload = window.open("uploadimages.asp", "upload",
"status=yes,toolbar=no,menubar=no,scrollbars=yes"); upload.targetitem =
targetitem'
value="carica">
PAGINA POP-UP (uploadimages.asp)
<script>
function select_item(item)
{
targetitem.value = item;
self.close();
return false;
}
</script>
<a href="#" onClick='return
select_item("<%=Request.Form("image")%>")'>Prosegui</a>
------------------------
ECCO: io non ho il valore del dato da aggiornare nella prima pagina pop-up!
Devo cambiare pagina (sempre all'interno della finestra pop-up) e non
funziona piů! Anche riportando il codice su tutte le pagine che seguono la
pop-up, il risultato non cambia... "targetitem" non č definito...
Come posso risolverlo?
Grazie!
Esteban

 "targetitem" non è definito...
Non si può dire che sei stato chiarissimo. Per esempio, targetitem cos'è?
una normale variabile o un oggetto (visto che scrivi:"targetitem.value")?
oppure due variabili diverse presenti sia nella pagina principale e nella
popup?
Nell'ultima ipotesi, se devi cambiare targetitem della finestra principale
dalla popup devi riferirti ad essa con "opener.targetitem". Se cerchi di
fare il contrario, e cioè leggere dalla finestra principale la variabile
upload.targetitem, non ti riuscirà mai, perché la popup nel frattempo è
stata chiusa.
Per "prudenza", sarebbe meglio chiudere la finestra dopo il ritorno dalla
popup, con un setTimeout("self.close()", 100);
Maurizio.

Di sicuro non sono stato chiarissimo... questa è una delle mie poche
*battaglie* con javascript, in cui incappo per rendermi la vita difficile
mentre sviluppo pagine in Asp.
Provo a spiegarti cosa voglio raggiungere.
PREMESSA
"targetitem" è una stringa che recupero tramite asp, dopo qualche pagina.
Ho un documento asp con il quale inserisco dati in un database, attraverso
un form ["form1"].
Oltre a svariati text field in cui l'utente deve scrivere, ho un paio di
text field in cui dovranno essere scritti i nomi dei file che l'utente può
caricare sul server. Questi nomi li posso avere solamente DOPO che l'utente
abbia svolto una procedura in asp all'interno di una finestra pop-up.
OBIETTIVO
Il campo di testo è vuoto [document.forms[0].nomeCampo]
L'utente apre una finestra pop-up. In questa finestra ["upload"] egli deve
eseguire delle operazioni su più pagine.
Concluso le operazioni, quando chiude la finestra posso assegnare il valore
al campo della finestra principale.
FASTIDIO
Con il codice che ho postato, se eseguo il codice che imposta targetitem a
qualcosa nella PRIMA pagina aperta nella pop-up... funziona. Se nella pop-up
accedo ad un'altra pagina e DA LI' eseguo lo script... 'targetitem non è
definito'.
RIASSUNTO
Posso assegnare valori a un textfield da una pagina pop-up, ok.
Ma se all'interno della pop-up cambio pagina, perde la gerarchia?
Scusa se ho complicato invece di semplificare :)
Ciao e grazie
Esteban
"Maurizio." <mau...@libero.itA> ha scritto nel messaggio
news:rZNa9.106987$n04.2...@twister2.libero.it...


Ce l'ho fatta!
Ho cambiato approccio, però.
Dalla finestra pop-up, nella pagina che mi permette di accedere al valore
che devo scrivere, eseguo questa funzione:
function aggiornaOpener() {
    opener.document.form1.image.value = document.forms[0].input.value;
    window.close();
}
Dove input è il textfield della pop-up in cui ho recuperato la stringa.
In questo modo posso scrivere nel campo di testo e chiudere la pop-up.
Mi sembra anche più semplice.
E visto che ci sono lo disabilito pure, per evitare che l'utente lo cambi
per errore:
function aggiornaOpener() {
    opener.document.form1.image.value = document.forms[0].input.value;
opener.document.form1.image.disabled=!opener.document.form1.image.disabled
    window.close();
}
Che ne dici?
(Per la soluzione targetitem... io abbandono, ma se hai capito ti sarei
grato mi spiegassi l'errore ;) )
Spero di riuscire a completare il form, ti farò vedere il risultato.
Ciao e grazie ancora
Esteban



 }
potevi aggiornare la variabile targetitem della finestra principale con:
    opener.targetitem = item;
e a questo punto potevi chiudere la popup.
Maurizio.

 e a questo punto potevi chiudere la popup.
Vuoi dirmi che
    opener.targetitem = item
avrebbe funzionato mentre
    opener.targetitem.value = item
*ovviamente* non andava?
Continuava a dirmi che targetitem non era definito, e l'errore me lo dava
nella pop-up. Cosa dovrei aver imparato, dunque ;) ?
Ciao e grazie mille
Esteban

> cipeciop.asp?menutarget="pippo"
al posto che solo come cipeciop.asp
poi nella finestra di popup, usa queste righe di codice per assegnare
la variabile anche nella nuova finestra (scusa la ripetizione
lessicale), ricordando che:
  location.search    // Restituisce quello seguito dal ?, compreso
                     // Esempio: ?menutarget="pippo"
  string.substr(1);  //Toglie il primo carattere
  eval(stringa);     //Esegue la stringa come se fosse un'istruzione
Quindi:
  eval(document.location.search.substr(1) + ';');
eseguirà l'istruzione:
menutarget="pippo";
assegnando la variabile voluta.
Sennò devi usare i cookies. 
Come bere un bicchier d'acqua... ;)
-- LoRDhaWk
PS se non va, prova con
eval(window.location.search.substr(1) + ';');
Altrimenti boh, chiedi ancora...