Newsgroup: it.comp.lang.javascript
Titolo: Select onChange="submit()" che non mi faccia inviare tutto il form

Ciao ho questa porzione di codice php.
---
<?
$_GET['mail'];
if ( (( $_GET['mail'])!='send' )  or ( is_null($_GET['mail'])) ) {
?>
<?
// -- Inizio Creazione Array Gruppi di Zone
$listaZ1Z2 = Array ('Alessandro' => '
aless...@mail.com
',
		    'Michele' => '
mic...@vmail.com
',
		    'Davide' => '
dav...@z.com
'
);
// -- Fine Creazione Array
// -- Function Inizio
//Crea una Select pasandogli il nome della variabile da inviare con il
form, un testo ed un'array bidimensionale
function CreaSelect ($valore, $testo, $nomearray) {
	echo "<select name=\"$valore\">\n";
	echo "<option value=\"0\">$testo</option>\n";
	foreach($nomearray as $nome_col => $mail_col) {
		echo "<option value=\"$mail_col\">$nome_col</option>\n";
	}
	echo "</select>\n";
}
// -- Function Fine
?>
 <form id="mail" method="post" action="mail.php?mail=send" >
<select name="zona" onChange="submit()">
<option value="0">Scegli la Zona</option>
<option value="Z1">Z1</option>
<option value="Z2">Z2</option>
<option value="Z3">Z3</option>
<option value="Z4">Z4</option>
</select>
<?
switch ($_POST[zona])
{
case (Z1):
	// -- Mittente --
	CreaSelect ( "mittente", "Scegli il Mittente", $listaZ1Z2); //Select
con variabile: mittente
...
...
...
<input type="submit" value="Invia" name="B1"  />
<form/>
--
Avrei bisogno che quando scelgo un valore dalla select zona venisse
"mandato avanti" la relativa value al fine di entrare nello switch
case..
Il problema che cosi fatto, non appena scelgo un valore di zona, viene
spedito anche il form prima che sia completato..
Potreste darmi una mano per sistemare il javascrit che praticamente
ignoro ?
grazie

 per sistemare il javascrit che praticamente ignoro ?
Ti chiedo scusa, ma non è solo javascript che ignori, ma sono anche le 
basi html ...
Stai facendo tutto via php, ergo stai lavorando server-side, ergo per 
usare il codice che hai riportato devi PER FORZA passare dal server, ergo 
quel "submit()" (a parte che manco sapevo funzionasse piazzato lì così) 
devi per forza farlo se vuoi creare da codice server-side l'altra select 
con il value.
Altrimenti devi buttare via questo codice e passare a usare l'oggetto 
xmlhttp (cerca in rete, troverai un fantastilione di esempi; se vuoi 
continuare a ignorare javascript cercati jquery); oppure fornire a 
javascript tutta la lista collegata a Z1,Z2 etc, così da poter compilare 
client-side la select. Se i valori sono solo 4, potresti server-side 
creare già le 4 select nascoste, così client-side tutto si riduce a 
visualizzare quella corretta. Dipende tutto dal contesto, dal numero 
delle voci per ogni select etc.


Ciao Cristiano (non so se ti ricordi di me.. hanni fa mi aiutasti
tantissimo con qualche "perla" in javascript)..
Si i valori sono solo 4...
Che intendi con "potresti server-side creare già le 4 select nascoste,
così client-side tutto si riduce a visualizzare quella corretta. 2?
Puoi farmi un esempio ?

 così client-side tutto si riduce a visualizzare quella corretta. 2?
Quello che intendevo è:
a) server-side crei le 4 select "nascoste" (display="none"), già 
compilate con i valori corrispondenti alle 4 voci "principali", che 
potresti chiamare per esempio risultato_Z1, risultato_Z2 etc
b) onchange della tua select principale visualizzi solo la select 
corretta. Un esempio così al volo potrebbe essere:
 - una var globale per sapere cosa stai visualizzando:
   var selVisibile=null;
 - per la select: onchange="seleziona(this)";
 - la tua seleziona(obj) potrebbe essere un qualcosa del tipo
   if(selVisibile!=null)
     selVisibile.style.display="none";
   selVisible=obj.form.elements["risultato_"+obj.value];
   selVisibile.style.display="block";