Newsgroup: it.comp.lang.javascript
Titolo: conferma selezione menu a tendina

Ciao a tutti,
come posso realizzare una cosa del genere?
Selezionando una voce di un menu a tendina, deve uscire una finestra di 
conferma; in caso affermativo deve essere settata la voce nel menu.
Grazie
UDG 

"U.D.G." <u...@NOSPAMemail.it> ha scritto nel messaggio
news:%80xd.536007$35.22...@news4.tin.it...

window.confirm("Sei sicuro??");

 ha scritto nel messaggio 
news:TT3xd.29569$Lg7.9...@twister1.libero.it...

ok, grazie Morgan, ma il mio problema è che se premo "annulla" la voce viene 
selezionata comunque!
 <select name="tipo" id="tipo" 
onChange="javascript:window.confirm('Attenzione: sei sicuro di voler 
cambiare il tipo utente?');">
UDG 

"U.D.G." <u...@NOSPAMemail.it> ha scritto nel messaggio
news:yuaxd.309644$b5.15...@news3.tin.it...

quello che ritorna dal confirm è un booleano,quindi devi fare un
controllo,se premi annulla è eguale a False,e gestisci quello.
o è cosi,o non ho capito io cosa stai chiedendo.
ciao

 ha scritto nel messaggio 
news:Cdfxd.33554$Zk.6...@twister2.libero.it...

il mio problema è sul controllo del menu. Se è false non selezionare, 
altrimenti seleziona! In codice come si fa?
Grazie ancora!
UDG 


Ciao,
per prima cosa saluto tutti ... ho da poco più di qualche ora iniziato a 
smanettare in Javascript.
Spero di poter essere utile e che sappiate darmi una mano in futuro in 
caso ne abbia bisogno ;)
Per quanto rigurda il tuo problema:
probabilmente il cambiamento di selezione nel menu a tendina avviene 
perchè richiami la tua funzione per il check quando viene generato 
l'evento onChange, cioò dopo che il cambiamento è avvenuto. Per questo 
motivo chiedere conferma non ti serve assolutamente a nulla, visto che 
ormai il cambiamento è avvenuto ...
Ti propongo una soluzione, che non so se sia la migliore ma funziona su 
IE e Mozilla ...
In poche parole dovresti controllare 2 eventi sulla select che ti 
interessa abbia questo comportamento:
- onClick: quando viene generato questo evento salvi il valore della 
proprietà selectedIndex all'interno di una variabile globale;
- onChange: esegui il confirm, e se viene restituito un valore negativo, 
assegni alla proprietà selectedIndex il valore salvato nella variabile 
globale.
Ti scrivo 4 righe di codice: non sono il massimo, ma dovresti capire 
come risolvere il tuo problema.
<html>
<head>
	<script language="javascript" type="text/javascript">
		<!--
 
		var oldindex = -1;
 
		function saveIndex(obj){
			oldindex = obj.selectedIndex;
		}
 
		function confirmChange(obj){
			if(!confirm("Confermi il cambiamento?")){
				obj.selectedIndex = oldindex;
			}
		}
		-->
	</script>
</head>
<body>
<select name="" onCLick="saveIndex(this)" onChange="confirmChange(this)">
	<option>1</option>
	<option>2</option>
</select>
</body>
</html>
Pensaci tu ad adattarlo alla tua situazione ed a migliorare l'utilizzo ;)
ciao,
Gabriele

 ha scritto nel 
messaggio news:f0kxd.538745$35.22...@news4.tin.it...

Perfetto, grazie mille Gabriele, funziona!!! ;-)
...a buon rendere!
UDG 

 conferma; in caso affermativo deve essere settata la voce nel menu.
L'ho scritto al volo, non l'ho testato, ma dovrebbe andare:
<script type="text/javascript">
function confirmChanges(o){
	var i=o.previousIndex;
 
	if(!confirm("Confermare la modifica?"))
		o.selectedIndex = i;
}
</script>
<select onfocus="this.previousIndex=this.selectedIndex"
onchange="confirmChanges(this)">
	<option value="0">frank</option>
	<option value="1">gretchen</option>
</select>
-- 
ZER0
~ The Tangent Universe collapsed 5895 days, 2 hours, 30 minutes and 44 seconds ago.

 IE e Mozilla ...
In realta' non tiene conto di due cose:
a) la modifica del valore della select tramite keyboard.
b) la possibilita' che vi possa essere piu' di una select nella pagina che
deve avere lo stesso comportamento.
Il primo punto dipende dal fatto che tu usi l'event-handler onclick; mentre
il secondo dalla variabile globale.
-- 
ZER0
~ The Tangent Universe collapsed 5895 days, 2 hours, 31 minutes and 2 seconds ago.