Newsgroup: it.comp.lang.javascript
Titolo: Far nascere un form da un form...

battute a parte:
 dovrei far in modo  che secondo l'opzione selezionata
<select name=prova size=7>
<option> uno
<option> due
mi compaia un ulteriore form nella setssa pagina oviamente senza
ricaricarla, come posso fare?...esempi?
Grazie

 ha scritto nel messaggio
news:8vgqbe$9es$1...@nread2.inwind.it...

[]
Lo inserisci in un layer invisibile che diventa visibile a seconda
dell'opzione selezionata.
Di seguito un codice per IE e NS:
--------------
<script language="javascript">
oldLay='lay1'
function vis(lay){
 is5=(document.getElementById)?true:null;
 doc=
(is5)?document.getElementById:(document.all)?document.all:document.layer
s.div0.document.layers
 sty=(document.all || is5)? '.style':'';
 // NS6 sembra non accettare l'uso di una variabile valorizzata come
funzione
 // quindi per NS6 non si utilizza la variabile doc
(is5)?document.getElementById(oldLay).style.visibility="hidden":eval('do
c["'+oldLay+'"]'+sty+'.visibility="hidden"');
 oldLay=lay;
(is5)?document.getElementById(lay).style.visibility="visible":eval('doc[
"'+lay+'"]'+sty+'.visibility="visible"');
}
</script>
</head>
<body >
<form name="form1">
 <SELECT id=select1 name=select1
onChange=vis(this.options[this.selectedIndex].value)>
<OPTION>selezionare</OPTION>
<OPTION value="lay1">Opzione1</OPTION>
<OPTION value="lay2">Opzione2</OPTION>
<OPTION value="lay3">Opzione3</OPTION>
</SELECT>
</form>
<DIV name="div0" STYLE="position:relative;">
<DIV name="lay1" id="lay1" STYLE="position:absolute; visibility:hidden;
width:30px; height:30px;">
<FORM action="" method=POST id=form2 name=form2>
<INPUT type="text" id=file1 name=file1>
</FORM>
</DIV>
<DIV name="lay2" id="lay2" STYLE="position:absolute; visibility:hidden;
width:30px; height:30px;">
<FORM action="" method=POST id=form3 name=form3>
<TEXTAREA rows=2 cols=20 id=textarea1 name=textarea1>
dghb
</TEXTAREA>
</FORM>
</DIV>
<DIV name="lay3" id="lay3" STYLE="position:absolute; visibility:hidden;
width:30px; height:30px;">
<FORM action="" method=POST id=form4 name=form4>
<INPUT type="radio" id=radio1 name=radio1>
<INPUT type="radio" id=radio2 name=radio1>
</FORM>
</DIV></DIV>
-------------

Ti ringrazio infinitamente per l'esempio! :)
Che mi sarà sicuramente utile ( me lo memorizzo subito)
però forse non va bene per il mio scopo attuale.. da quello
che mi sembra di capire i form vengono caricati (spero di sbagliarmi)
e resi visibili successivamente mentre io devo caricarli solo a richiesta
perche' sitratta di selbox ciascuno con diverse centinaia di opzioni
e lo scopo è appunto evitare di caricare quelli non richiesti!
Mi confermi che vengono caricati inizialmente?
Ancora grazie
X

 Mi confermi che vengono caricati inizialmente?
Vengono caricati inzialmente in effetti, e resi visibili successivamente.
C'e' la possibilita' di MANIPOLARE (o CREARE su IE5.x e NN6) dinamicamente
una selbox, e quindi non semplicemente renderla visibile o meno, ma non
credo che ti serva piu' di tanto, in quanto in ogni caso il CODICE per
creare dei selbox viene cmq caricato subito dal client, e quindi e' sempre
un caricamento "non richiesto", non so se mi sono spiegato.. Inoltre avresti
una pagina quasi sicuramente piu' "pesante" (se non e' possibile
automatizzare il processo di creazione, ovvero gli option sono molto
dissimili tra loro.. il 98% del casi.).
Lo scopo che tu vuoi raggiungere lo puoi fare solo con tecnologia SERVER
SIDE.
Prendi Hotmail, ad esempio. Una volta selezionata lo stato di appartenenza
da una selbox, ti fa scegliere la citta' da u'altra selbox.
Ma come funziona? Prima ti mostra una selbox con tutti gli stati, mettendo
per default USA, e nell'altra selbox mette tutte le citta' degli USA.
Una volta cambiata la nazione, viene RICARICATA la pagina (nuova richiesta
al server) dove va presumibilmente a pescare da un database tutte le citta'
del nuovo stato che hai scelto, componendoti quindi la nuova pagina e
rimandandola al client.
In questo modo, carichi in effetti solo l'indispensabile. Ma e' d'obbligo
una nuova richiesta al server.
E questa cosa solo con JS lato client non la fai, hai bisogno di operare per
l'appunto con linguaggi server side tipo ASP, PHP...

 Ancora grazie
Come gia' risposto da ZER0 quel codice carica tutto all'inizio.
Se non puoi utilizzare pagine attive sul server puoi utilizzare lo
stesso meccanismo con javascript.
C'e' una discussione di meta' ottobre con oggetto REGIONI - PROVINCE.
Prova a guardare se ti puo' essere utile.
Saluti, Paolo

 al server) dove va presumibilmente a pescare da un database tutte le
citta'
forse non ho capito bene...
ma io non voglio ricaricare altre pagine dopo la prima selezione
questo perche' nella pagina c'è una applet avviata e non volglio riavviarla
e non voglio usare nemmeno i frame...
altrimenti sarebbe troppo facile:)
Ho pensato di caricare un file .js  (da cui normalmente prende  i valori
delle option  )
quando viene reso visibile il 2° form... ma dopo un veloce test mi sembra
che la cosa non funzioni
 ... è possibile quando richiamo una funzione in cui carico un file .js
attendere che questo sia caricato prima di procedere?... mi sembra che ciò
non avvenga automaticamente.
Grazie

Ciao,
Ho risposto a ZERO
Grazie:)

 e non voglio usare nemmeno i frame...
e non vuoi nemmeno che le select ti vengano caricate INSIEME e poi rese
visibili solo quando necessario...
...
..
Insomma, hai ESCLUSO tutte le possibilita' di realizzare questa cosa.
:D
Non te ne va bene una..! :)
Non ci sono altri metodi, escluso il Remote Scripting e l'RDS, per fare
quello che tu chiedi.. Ma cmq dubito che tu possa far uso del Remote
Scripting, figuriamoci dell'RDS (l'RDS deve istanziare DLL su Server, e
l'unico modo per farlo e' avere un server proprio, in housing, al limite...
Nessun provider ti lascerebbe mai instanziare DLL proprietarie sul loro
server. ^^), e cmq non sarebbe questa la sede per parlarne (siamo in
it.comp.lang.javascript, dopotutto).