Newsgroup: it.comp.lang.javascript
Titolo: Aree e sottoaree

Ho un FORM con un SELECT che contiene delle voci che rapprensentano
delle aree (economia, informatica, linguistica, etc) e voglio che
quando l'utente ne seleziona una (es. economia) appaia accanto
un'altra SELECT contenente le sottoaree dell'area scelta (se
area=economia allora sottoaree saranno: politica, finanziaria,
gestionale, aziendale, etc).
First problem: come faccio a tenere il SELECT delle sottoaree
disabilitato per tutto il tempo e farlo attivare solo quando l'utente
sceglie un'area? (JS?)
Second problem: poichč prelevo le sottoaree dal DB a seconda dell'area
scelta, come faccio a valorizzare il SELECT delle sottoaree "al volo"
con PHP? PHP non č un ling. ad eventi, quindi non posso usare un
onclick per far partire uno script PHP.
Soluzione che ho pensato: ricaricare la pagina dopo che l'utente ha
scelto un'area. Perň non mi sembra molto elegante, tanto piů che
l'utente potrebbe notare il ricaricamento, il che sarebbe squallido!
Altra soluzione: carico da subito tutte le possibili sottoaree in
alcuni array e faccio uso di quello contenente le sottoaree relative
all'area scelta. Non č il massimo dell'efficienza, ma..
Qualche altra idea? Penso che sia un problema diffuso..
Mhaxx

Puoi caricare tutte le option in un array e poi compilare dinamicamente la
select in base alla scelta; trovi un tutorial su 
jsdir.com
:
http://www.jsdir.com/faq/faq.asp?espandi=mostra&numero=445
Se sono molte non è il massimo; in tal caso se vuoi essere cross-browser
devi per forza ricaricare la pagina dopo la scelta; altrimenti, per i
browser più recenti, e in presenza di un server microsoft (asp), puoi usare
xmlhttp che effettua chiamate lato server e restituisce il risultato senza
ricaricare la pagina.
Troverai in giro, magari, anche soluzioni basate su remote
scripting...dimenticale perché funziona solo con IE e non è detto continui a
funzionare in futuro perché Microsoft ha perso la causa e sembra debba
sostituire la sua virtual machine con la java machine di Sun (dove le
chiamate lato server non funzionano); se vuoi seguire questa strada prova a
dare un occhio al "rifacimento" di remote scripting proposto da Ashley (
http://www.ashleyit.com/rs/main.htm
 ): lo ho usato per il sito 
www.eir.it
(modificandolo un minimo per le mie esigenze) e funziona direi benino...

>
http://www.jsdir.com/faq/faq.asp?espandi=mostra&numero=445
Perfetto! E' esattamente quello che cercavo..
Manca solo una cosa: come faccio a mettere il secondo SELECT
disabilitato (in secondo piano per intenderci) e farlo "apparire"
abilitato dopo un click sul primo SELECT? In altre parole cosa devo
mettere dentro onclick del primo SELECT?
Grazie mille, ciao.
Mhaxx

mettilo disabled=true e cambia in false sull'onclick (oppure metti
display:none e poi rivisualizzalo)

>mettilo disabled=true e cambia in false sull'onclick
Non riesco a trovare la proprietà o il metodo che mette a false il
disabled di una SELECT..
Altro dubbio: non è possibile che io costruisca in modo dinamico, cioè
con PHP, l'array degli OPTION da mettere nella seconda SELECT, cioè
quella che si valorizza a seguito della scelta di una voce nella prima
SELECT, vero? Penso che non sia possibile.. infatti mi servirebbe
poter "passare" al codice PHP (che costruisce questo array al volo) la
scelta fatta sul primo SELECT, che posso ottenere facilmente da JS, ma
non da PHP che io sappia. Forse sto dicendo un'eresia grande come una
casa, ma non è possibile far passare al PHP l'option scelto
dall'utente? Forse so già la risposta da me: no, perchè PHP è lato
server (e quindi viene eseguito prima che l'utente abbia modo di
scegliere). Giusto? :-(
Mhaxx

 scegliere). Giusto? :-(
Giusto
puoi ovviare con xmlhttp, remote scripting etc (come ti ho scritto prima) in
un ambiente Microsoft (non so sotto cosa stai facendo girare php, iis o
apache?); in un ambiente unix non so aiutarti

apache?); in un ambiente unix non so aiutarti
Apache, cmq lascia perdere, non arriverei a tanto, va bene così..
Ciao, grazie ancora.
Mhaxx

document.forms['nometuaform'].elements['nometuaselect'].disabled=false;

display:none e poi rivisualizzalo)
Da JS non mi pare si possa rivisualizzarlo..
Mhaxx

A me sembra proprio di sě

Non ho trovato nulla da JS per "comandare" il display di un SELECT..
Mhaxx

??
Forse non siamo dicendo la stessa cosa:
document.forms['nometuaform'].elements['nometuaselect'].style.display="none"
( = "" se vuoi renderlo visibile) a te non funziona? Che browser usi?

( = "" se vuoi renderlo visibile) a te non funziona? Che browser usi?
Opss, non avevo messo ".style."! ;-)
Ora vorrei usare il display al posto del disabled perchč ho notato che
il disabled funziona con tutti i miei browser eccetto Opera: prova
anche tu, succede che resta sempre disabled. Sbaglio o č cosě? E'
risaputa questa cosa? Esiste qualche soluzione?
Grazie, ciao.
Massimo

 risaputa questa cosa? Esiste qualche soluzione?
Io uso per compatibilità i browser che seguono gli standard; Opera, nella
versione 6 (non so la nuova uscita) non li rispettava => mai fatto siti con
compatibilità Opera, quindi non so aiutarti

compatibilità Opera, quindi non so aiutarti
Scusa la curiosità, ma di che standard parli? E quali sono i browser
che lo rispettano (o meno)?
Massimo

( = "" se vuoi renderlo visibile) a te non funziona? Che browser usi?
Secondo te è possibile fare un "display: none" di un testo, di un
normalissimo testo? Ho provato con una cosa del tipo: <SPAN
style="display: none;">abcdef</SPAN> ma non funge..
Massimo

 style="display: none;">abcdef</SPAN> ma non funge..
Dovrebbe funzionare...che browser usi?

 che lo rispettano (o meno)?
Esiste uno standard definito da un consortium; se hai molto tempo da
dedicarci trovi tutto su 
w3.org

Dovrebbe funzionare...che browser usi?
Sě era un problema di browser, in effetti funziona..
Massimo

dedicarci trovi tutto su 
w3.org
Conosco il W3C e so di cosa si occupa, ma non sapevo esistesse uno
standard per i browser, o meglio che vi fossero browser che vi
aderissero. Voglio dire: IE e Mozilla, i due attuali colossi, immagino
che aderiscano allo standard, è così? Ma questo non rispecchia la
realtà, nel senso che IE, come tutti i browser, interpreta HTML, CSS,
etc in *alcuni* casi a suo piacimento..
Massimo

 etc in *alcuni* casi a suo piacimento..
Per l'appunto.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

Per "aderiscono" non intendo che firmano un contratto o un patto, intendo
che rispettano almeno le specifiche minime definite p.e. per css, o per
ecmascript...
Poi ognuno dei browser (IE soprattutto) aggiunge delle proprietą, metodi,
eventi, collections etc proprietari.
Opera 6 non supportava ecmascript in pieno, per esempio (come del resto ie4)

>Tutti i browser Gecko-based
Che di fatto sono i Mozilla (figli, padri e fratelli compresi, vedi
Thunderbird), no?
Massimo