Newsgroup: it.comp.lang.javascript
Titolo: Recuperare valore ritorno da popup modale

Salve a tutti,
sviluppo in 
ASP.NET
,
apro una popup modale come segue
function ApriPopUp(URL, Larghezza, Altezza)
{
 //parametri
    window.open(URL, 'Finestra' ,param1 + param2);}
Nella form popoup per renderla modale
<body onblur="javascript:window.focus()">
Eseguo scelta di valori.
Chiudendo la popup, dalla chiamante, devo verificare se è stato passato un 
valore;
pensavo di metterlo in un controllo invisibile, tipo:
window.opener.Form1.inpvalritorno.value='si';
window.close();
Come intercettare il valore di ritorno, dalla chiamante, per eseguire altre 
operazioni ?
Grazie
giuseppeD 

 window.close();
Mi sembra corretto, solo che...quando esegui l'istruzione sopra?
Prova a metterlo onunload del body (body
onunload="opener.document.forms['Form1'].elements['inpvalritorno'].value='si'")
Se ti serve eseguire una function nel momento in cui chiudi puoi anche
creare nella chiamante una function del tipo
 function OkChiuso(val) { 
  alert(val)
 }
e poi sempre onunload chiamarla con opener.OkChiuso(tuovalore)
Non č chiaro dove si trovino questi valori (nel tuo esempio setti
semplicemente un "sě" ma non vi č traccia del valore/valori di cui parli).
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 semplicemente un "sě" ma non vi č traccia del valore/valori di cui parli).
1- Fom popup:
function chiudiForm()
{  opener.document.forms['Form1'].elements['inpvalritorno'].value='si'
 window.opener.funzionediritorno('si');
 window.close(); }
<body onblur="window.focus()" onunload=chiudiForm()>
2- form chiamante:
function funzionediritorno(val)
{
 if(val=='si')
 {
  alert(val);
  document.Form1.submit;
 }
Non scatta il submit,
in quanto devo eseguire, successivamente, operazioni lato server (con i 
valori presenti nelle caselle di testo).
Come posso attivarlo ?
Ho notato che nel alert(val); ci passa due volte.
Grazie
giuseppeD

  if(val=='si')
Io non sto ben capendo...non sembra tu stia passando dei valori;
sembrerebbe che *sempre* quando chiudi la popup devi scatenare il submit().
Se č cosě potrebbe bastare un
onunload="opener.document.forms['Form1'].submit()"...
Oppure sto capendo male e manca un pezzo?
p.s. la madre e la popup sono nello stesso dominio, vero? Altrimenti non
puoi farci nulla
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 Oppure sto capendo male e manca un pezzo?
Sto inbastendo e proponendo una traccia.
La richiesta č di impostare il piů possibile lato client.
Diciamo che sono ancora un pň scoperto con java script.
Dalla chiamante si apre una popup modale,
nella modale si selezionano dei valori, tra calendario e combo,
i valori selezionati nella popup vengono trasmessi, sempre lato cliente, in 
caselle di testo della chiamante.
Alla chiusura della popup, si verifica, nella chiamante, se č presente  un 
certo valore di autorizzazione.
Se il valore autorizza, fa scattare il submit, quindi trasferisce 
l'esecuzione al lato server, al codice 
vb.net
.
Il codice legge i valori nelle caselle di testo, e colloquia con il 
database.
Penso di proseguire come segue (imbastitura):
1- Form chiamante. Apertura popup lato client
function ApriPopUp(URL, Larghezza, Altezza)
{
 //parametri
    window.open(URL, 'Finestra' ,param1 + param2);}
2-  Form popup
- Nella form popoup per renderla modale
<body onblur="javascript:window.focus()">
- 'Selezione valori
-chiusura form
function chiudiForm()
{
    //verifica se selezionati alcuni valori. Se si prosegue. Altrimenti 
alert
opener.document.forms['Form1'].elements['inpvalritorno'].value='si'
//passaggio altri valori ad altre caselle di testo
window.opener.funzionediritorno('si');
window.close();
}
3- Form chiamante, lato cliente
function funzionediritorno(val)
{ if(val=='si')
{ document.forms['Form1'].submit();
} }
4- form chiamante lato server
Private Sub Page_Load(..................
         If Not Me.IsPostBack Then
            If Me.txt1.Text = "valore" Then
                Dim st1 As String = Me.txt1.Text
                Dim st2 As String = Me.txt2.Text
                'colloquio con il database
                Me.txt1.Text = [String].Empty
            End If
        End If
    End Sub
Saluti
giuseppeD