Newsgroup: it.comp.lang.javascript
Titolo: aprire nuova finestra popup coi valori di un'altra finestra

Ciao a tutti; sono nuovo del newsgroup ed ho un problemino di media
difficoltà, per me insormontabile.
Avrei bisogno di aggiungere ad un form la possibilità di eseguire l'upload
di un file.
Pensavo di aprire una finestra pop up al click di una checkbox.
Il mio form già esegue on submit una validazione:
<script language="javascript" src="../strumenti/validazione.js"></script>
<script language="javascript">
function validazione_form_inserzione(frm)
{
 if(!isName(frm.nome_inserzione.value,'NOME')) return false;
 return confirm("Confermi i dati dell'inserzione?");
}
<form name="form1" method="post" onsubmit="return
validazione_form_inserzione(this)" action="inserzione_inserimento.asp">
Ho trovato già fatta questa soluzione per aprire una pop up contenente input
hidden dei campi della precedente form:
<SCRIPT LANGUAGE="javascript">
function apri(form,car,nome)
   {
   if (!nome)
      nome = 'aa' + (new Date().getTime());
   form.target = nome;
   open ('', nome, car);
   }
</SCRIPT>
<FORM ACTION="prova.htm"
onSubmit="apri(this,'width=300,height=200,resizable=1,scrollbars=1,toolbar=0
,status=0,menubar=0,location=1'); return true;">
Purtroppo non riesco a combinare i due esempi.
Mi piacerebbe che alla spunta della checkbox (quella per indicare
l'intenzione di fare l'upload) venisse aperta una finestra
pop up, per eseguire l'upload, contenente i campi ed i valori del precedente
form. Tali valori poi li reinvierei alla pagina
del form per concludere l'inserimento.
La pagina "inserzione_inserimento.asp" non può contenere il codice
dell'upload perchè (veramente il perchè non lo so;
l'esperienza me lo ha dimostrato) le selectboxes con multiselect mi
darebbero solo un valore.
C'è una persona pia che mi dà una mano?
Grazie anche solo per avere letto.
Brio

 Il mio form già esegue on submit una validazione:
[CUT]
Sì, ma non ti serve onsubmit visto che vuoi aprire la finestra onclick di
una checkbox (non in contemporanea al submit() della form).
Non ti basta (browser moderni) <tuacheckbox onclick="window.open(blabla)">
?
Tanto, da quel che ho capito, sono 2 operazioni indipendenti (non devi
inviare il form *e insieme* il file da caricare sul server)
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 ha scritto nel messaggio
news:1miplcnhq1r43$.dlg@ID-147253.user.individual.net...


Dimentiva ed aggiungo:
Per eseguire quella funzione, che ho postato all'inizio del thread, per
trasferire i valori nella pop up, occorre onsubmit.
Brio

 caricare la finestra popup.
Beh, nella tua function di validazione prima di fare il return true apri la
popup (anziché return confirm() userai var ris=confirm(blabla);if(ris)
window.open(blabla); return ris).
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 ha scritto nel messaggio
news:mrv19cidzbdx$.dlg@ID-147253.user.individual.net...


 }
Quanto sopra però è indipendente dalla form (nel senso che apre la popup ma
*subito dopo* esegue il submit()).
Se, invece (non è chiarissimo) è necessario che *prima* venga effettuato
l'upload del file e *poi* il submit() (ma in modo automatico, senza
interazione dell'utente) la strada è un po' diversa (restituisci sempre
false, quando chiudi la popup potresti eseguire un
opener.document.forms[0].submit(), ma è un po' da ragionare).


Ricapitolo il mio desiderio (dire intenzione sarebbe un po' forte: non ne ho
i mezzi), senza alcun ragionamento informatico.
Nel form di una finestra A prevedere una checkbox che al click o al submit
apra una finestra B popup per eseguire l'upload.
Al termine dell'upload la finestra B popup si chiude e la precedente
finestra A viene ricaricata.
Una volta ricaricata la finestra A nella pagina, al posto della checkbox,
c'è il nome del file uploadato.
Miei ragionamenti.
- la pagina per l'upload non può essere la stessa dell'inserimento dati
altrimenti, inspiegabilmente, non vengo inseriti tutti i valori di una
select box con multiselect. ? occorrono 2 pagine separate.
- l'evento onclick non mi permette di ritornare i valori dei campi del form,
quindi il popup non potrebbe avere i valori inseriti nel form ? penso che
l'evento onclick sia da escludere.
- l'evento onsubmit forse è l'unica strada (sapendola percorrere) per
caricare la finestra popup passandogli i valori del form i quali, dopo avere
eseguito l'upload, dovranno ripassare, con l'aggiunta dell'indirizzo del
fine uloadato, al form iniziale.
E' possibile quello che dico?
Mah.
Brio

 apra una finestra B popup per eseguire l'upload.
Ok, onclick della checkbox apri la tua popup che esegue l'upload; una volta
effettuato (tutto lato server) alla riapertura della popup potresti settare
un campo hidden nella form chiamante con il nome del file (hai per forza
bisogno per altri motivi di ricaricare la pagina?) e nascondere (o rendere
disabled) la checkbox.
Unico problema: se non ricordo male ricaricando la popup (per fare l'upload
passi dal server) perde il riferimento all'opener (ma non ne sono sicuro,
da verificare). Se ciò accade è comunque aggirabile.
Presupponendo che l'opener rimanga quando ricarichi la popup potresti
mettere onload un qualcosa del tipo
opener.document.forms[0].elements['namedeltuocampohidden'].value='nomedelfilescrittolatoserver';
opener.document.forms[0].elements['namedellatuacheckbox'].style.display='none';
close();
Solo uno spunto per iniziare, prova un po'.
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 da verificare). Se ciň accade č comunque aggirabile.


 pagina, questi campi si cancellano.
Sì, se fai ricaricare la pagina "madre" (opener) perdi i dati già scritti.
Dipende sempre dal contesto però che non ho ancora capito: se vuoi
restituire il nome del file ti ho scritto come fare (puoi per esempio
scriverlo in un hidden), se vuoi nascondere la checkbox idem, se vuoi
anziché ricaricare effettuare il submit della form stessa logica
(opener.document.forms[0].submit()) etc etc...


Facciamo l'esempio:
MADRE
_______
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>madre</title>
<SCRIPT>
<!--
window.name
="madre"
function fin()
 {
 window.open("popup.asp","","width=200,height=200");
 }
//-->
</SCRIPT>
</head>
<body>
<form name="form1" method="post" action="figlio.asp">
  <input name="" type="text">
  <select name="select" size="4" multiple>
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
    <option value="d">d</option>
  </select>
<%
if request.form("file")="" then
%>
  <input name="upload" type="checkbox" value="checked"
onClick="javascript:fin()">
<%
else response.write request.form("file")
end if
%>
</form>
</body>
</html>
POPUP
_______
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>popup</title>
</head>
<body>
<form action="madre.asp" method="post" target="madre">
 <input name="file" type="file">
 <input name="select" type="hidden" value="">
 <input type="submit" value="upload">
</form>
</body>
</html>
_______
COMMENTO:
La pagina magre.asp una volta compilato il form trasferisce i falori a
figlio.asp
Se però uno clicca sulla checkbox viene caricato il popup per l'upload, che,
una volta eseguito, trasferisce il valore alla pagina madre.asp
Ma per trasferire alla pagina popup anche gli altri valori su campi hidden,
come si fa???
Ho bisogno che la pagina popup ritrasferisca a madre.asp anche i valori del
form già compilato, altrimenti si perdono tutti.
Help!
Brio