Newsgroup: it.comp.lang.javascript
Titolo: leggere il valore selezionato in una option





Ho creato una option con il seguente 
codice:


 


<select name=ACQUISTO style="width: 
100px">';


$a1=0;$a2=0;


for($j=0;$j<count($var[$a]);$j=$j+2) 
{


  echo '<option 
value="">'.$var[$a][$j].' - '.$var[$a][$j+1].'';


  $a1=$a1+$var[$a][$j];


  $a2=$a2+$var[$a][$j+1];


}


echo '<option value="" selected>'.$a1.' - 
'.$a2.'';


echo '</select>


 


Dove $var[....] sono valori letti da un file di 
testo


 


Ora dovrei mettere una funzione che mi legga il 
valore selezionato nella option, per poi cancellarlo, ma non riesco a farlo in 
javascript


e non credo che in php si possa fare..


 


Mi riuscite a dare una 
mano?



 e non credo che in php si possa fare..
Non ho ben chiaro il tutto, porta pazienza, sarà anche l'orario..
Cmq lato client (javascript) per ottenere il valore selezionato nella
select, puoi fare nei seguenti modi.
Ponendo un codice HTML come segue:
<form>
	<select name="mysel" id="myselect">
		<option value="1" selected="selected">John</option>
		<option value="2">Doe</option>
	</option>
</form>
In JS:
document.forms[0].mysel.value
o
document.forms[0].mysel.options[document.forms[0].mysel.selectedIndex].value
Il secondo metodo è compatibile anche con i vecchi browser, come Netscape
4, mentre il primo segue gli standard del W3C ed è compatibile con tutti i
browser più o meno recenti (si parla anche di IE4, che non è proprio di
primo pelo).
Ovviamente il "come" ottieni un riferimento all'oggetto select, è
ininfluente. Puoi usare anche altri metodi, come "getElementById" etc.
-- 
ZER0
~ The Tangent Universe collapsed 6023 days, 12 hours, 58 minutes and 10 seconds ago.





Grazie mille per le risposte e per i 
suggerimenti!!


 


Ora mi sono arenato perchè avendo un fatto un ciclo 
all'interno del quale metto la funzione f()


ho bisogno di passare dei parametri quando la vado 
a richiamare del tipo:


 


<SCRIPT>


var a=ACQUISTO;


var b=ACQUISTATI;


</SCRIPT>


....


....onClick="f(a,b)"


 


e la funzione f è:


 


function remove() {


var Sel=document.a.b;


Sel.options[Sel.selectedIndex]=null;


}


 


ma non me li prende i valori di a e b



 var Sel=document.a.b;
Se sopra ho dedotto bene, Sel==b==true; ossia questo Sel sta referenziando
l'oggetto b...ergo puoi usare direttamente b.
Se invece volevi solo salvare il nome, e quindi 
 var a="ACQUISTO", b="ACQUISTATI"; //quindi solo il nome, da mettere tra
virgolette
 var Sel=document.forms[a].elements[b];
 
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.





Ok allora ho fatto questa funzione:


 


function value() {


alert(document.forms[a].elements[b].value);


}


 


e dei vari form simili a questo..


 


<form name="ACQUISTI">


<select name="ACQUISTO" size="1" multiple STYLE="width: 
100%">


<option value="">Acquisto


</form>


 


se clicco su di una option di uno di questi form, e poi su 
d un bottone che richiama value() dovrei avere una alert con il valore 
selezionato... ma non funziona


 


a lo ho settato "ACQUISTI" e b "ACQUISTO" giusto per 
vedere se funzionava..



 a lo ho settato "ACQUISTI" e b "ACQUISTO" giusto per vedere se funzionava..
Impossibile...se a="ACQUISTI" e b="ACQUISTO",
alert(document.forms[a].elements[b].value); non può non funzionare (a meno
che tu non stia usando netscape4, nel qual caso vedi spiegazione di Zer0).
Potrebbe essere quel "value()" che fa macelli? (value è una parola
riservata).
Io proverei:
a) cambiare nome alla function
b) mettere solo un alert("ok"); per vedere se viene invocata
c) mettere un alert(document.forms["ACQUISTI"].elements["ACQUISTO"].value);
per vedere se trova correttamente la form e la select
d) mettere un alert(a+"*"+b); per vedere se hai referenziato correttamente
le 2 variabili globali.






ma se io ho 4 form, con 4 select e 1 option per 
ogni select...


e un bottone sul quale qnd ci clikko 
mi esegue la funzione


 


function remove() {


var Sel=document.forms[0].selectname.value;


Sel.options[Sel.selectedIndex]=null;


}


 


può andare bene x cancellare qualsiasi option selezionata?


perchè non mi funziona!!



ah non avevo capito scusa...
ho scritto quanto segue:
ho 4 form, con 1 select x ogni form, che contiene 1 option ognuna
e un bottone sul quale qnd clicco mi viene eseguita una funzione
function remove()
var Sel=document.forms[0].selectname.value;
Sel.options[Sel.selectedIndex]=null;
}
cioč vorrei che venisse cancellata la option che seleziono
e tale funzione non mi funziona.. 

non mi passa i valori...
ho provato a metterli direttamente nella funzione f()
al posto di qualeForm e qualeSelect e funziona
ma se li faccio passare dalla funzione quando la chiamo
non va.. 

come non detto ora mi funziona...
ma quando si cancella un valore nella option  possibile far vedere la 
successiva? 

mmm ho aggiunto ad f()
Sel.options[Sel.selectedIndex]=Sel.selectedIndex+1;
e funziona anche... ma poi mi dice "Errore nella visualizzaizone della 
pagina" questo IE..

cosa strana mi succede...
invece di mettere button... ho messo type=image
<form name="acquisti">
<select name="acquisto">
<option value="1" selected="selected">John
<option value="2">Doe
</select>
<input type="IMAGE" src="image/up.gif" 
onclick="remove(this.form,'acquisto');">
</form>
e quando vado a cliccare sul'immagine mi ricarica la pagina invece di 
cancellari i valori.. 

si allora avevo fatto... e funziona bene con il type="button"
function remove(nForm,nSelect) {
var Sel = nForm.elements[nSelect];
if(Sel.length > 0) {
var num = Sel.selectedIndex;
Sel.options[Sel.selectedIndex]=null;
Sel.selectedIndex = num;
}
}
ma quello che non capisco è ke se usco il type="image" non funziona..
mi ricarica tutta la pagina... invece di cancellare come fa il button 

Però così mi carica una pagina ke non esiste e mi da errore