Newsgroup: it.comp.lang.javascript
Titolo: Form annidate (?)

Salve, sono un programmatore neofita di PHP/Javascript, (anche se esperto di
C++/Assembler etc.).
Sto realizzando un sito in cui gestisco un data-base relazionale con una
struttura (logica) di albero (genealogico). Ossia: ogni elemento (riga) del
database può "puntare" a 0-1-2 elementi della tabella. Tralasciando le ovvie
polemiche sul fatto che la tabella non è in 3a forma normale, etc., vengo al
dunque:
Nella finestra (form 1) dove si digitano i dati di un elemento (Nome,
Cognome, etc.), ad un certo punto bisognerebbe fare scegliere all'utente se
il "padre" o la "madre" dell'individuo sono nel data-base, con una maschera
di ricerca (form 2). Selezionando uno tra gli elementi risultato della
ricerca, l'ID dell'elemento selezionato dovrebbe essere restituito
nuovamente al (form 1) affinché possa visualizzare nell'opportuna  sezione i
dati sul genitore.
Ossia (per esempio):
Form 1
    <Anagrafica>
   <Anagrafica Padre> [Pulsante Ricerca Padre]
  <Anagrafica Madre> [Pulsante Ricerca Madre]
I pulsanti di ricerca fanno apparire una NUOVA finestra (Form 2) del tipo
   <Nome>  <Cognome> <AnnoInizio> <AnnoFine>     [pulsante Effettua Ricerca]
Quando si preme "Effettua ricerca", appare un elenco (calcolato in PHP) da
cui si può selezionare un elemento, e questo evento lo posso associare ad
una funzione Javascript nel Form 2.
Qual'è il miglior modo per passare le informazioni (lin realtà l'ID)
dell'elemento selezionato (nella form 2) alla form 1?
Nota:
Ho postato questo messaggio in questo form poiché sospetto che la soluzione
debba essere di tipo client-side, dunque Javascript, poiché la selezione di
un elemento dovrebbe chiudere la form 2 e tornare alla form 1 con i dati
aggiornati, la qual cosa mi sembra un processo client  e non server-side.
Spero di essere stato chiaro, e che qualcuno di voi esperti mi possa dare la
"dritta" giusta.
Grazie!
--
dr. Gaetano Lazzo
Smartcard Software Developer

 Nota:
Premesso che non è possibile annidare form:
<FORM NAME="form1...>
  <FORM NAME="form2...>
  </FORM>
</FORM>
ma questo lo saprai già :-) la soluzione che uso io è in una struttura di 
questo tipo:
<FORM NAME="form1...>
<INPUT TYPE="hidden" NAME="datidaform2">
</FORM>
<FORM NAME="form2...>
</FORM>
cioè metti un campo hidden nel form principale (quello che verrà 
submittato) e lo valorizzi con i dati che ti servono quando "invii" il 
form2 che ovviamente non invierai davvero, ma colleghi ad un tasto <INPUT 
TYPE="button"> una funzione che prende i valori da form2 e li porta nel 
campo hidden.
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
 ----> itALY = it <----

Forse non mi sono spiegato:
Il Form 2 appare in una NUOVA FINESTRA (che si apre OLTRE a quella del FORM
1).
Nella Form 2 l'utente effettua una ricerca, e seleziona un elemento tra i
risultati. Nel frattempo la Form 1 rimane aperta (sotto) . Quando è
effettuata la scelta (nella Finestra della Form2), la Form2 si dovrebbe
chiudere e nella Form 1 (che è rimasta aperta per tutto il tempo) dovrebbero
essere visualizzati alcuni dati ricavati dalla selezione della Form 2.
Non posso avere le due Form  nella stessa finestra, poiché diverrebbe troppo
complessa da usare.
Le due form sono "annidate" nel senso che nella form 1 c'è un bottone che
"apre" una nuova finestra (in sovrapposizione) con la Form 2. Il problema è
che non so come fare a rintracciare il risultato della selezione nella Form
2 per causare un'aggiornamento della Finestra della Form 1.
Mi sono spiegato adesso?
"Riccardo" <ri.ri...@agora.stm.itALY> ha scritto nel messaggio
news:MPG.16ffdf07a...@powernews.libero.it...


 Mi sono spiegato adesso?
Un pochettino meglio.
Ok, la base è quella che ti ho scritto prima, con la differenze che la 
funzione lanciata dalla conferma nel secondo form (in pop-up) può puntare 
al primo form usando "opener".
opener.document.nomeform1.nomecampohidden.value=.... 


Ah! benissimo, non lo conoscevo, questo "opener". Spero funzioni su tutti i
browser!
Perfetto... Grazie tante!
In realtà dovrei anche impostare (analogamente) altri campi di Form 1 (non
hidden).... e tutto dovrebbe funzionare.
Mi rimane solo un dettaglio: posso impedire la modifica di tali campi
(risultato della Form2) da parte dell'utente? Ossia c'è una proprietà delle
text per far si che siano "read only"???
Grazie ancora!
"Riccardo" <ri.ri...@agora.stm.itALY> ha scritto nel messaggio
news:MPG.16ffe85f4...@powernews.libero.it...


 text per far si che siano "read only"???
<INPUT TYPE="text" .... onFocus="this.blur()">
