Newsgroup: it.comp.lang.javascript
Titolo: Che c'e' di sbagliato?

Salve ragazzi, ho un form e alla fine controllo due radio button. Il
problema e' che se non e' stato selezionato nessuno dei due radio da si il
messaggio nell'alert ma poi il form viene inviato lo stesso! gli altri
controlli che faccio prima funzionano.....dove sbaglio?
var radio_choice = false;
for (counter = 0; counter < theForm.pagamento.length; counter++)
{
if (theForm.pagamento[counter].checked)
radio_choice = true;
}
if (!radio_choice)
{
alert("Campo Metodo di pagamento non valido.");
theForm.pagamento.focus();
return (false);
}
return (true);
}
//-->
</script>

 return (false);
 non č un metodo: return false;
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Statements:return
-- 
"e mai che mi sia venuto in mente
 di essere piů ubriaco di voi
 di essere molto piů ubriaco di voi"
									  F.D.A.

 
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Statements:return
Non è quello il motivo se non funziona qualcosa. Fare:
	return false;
o
 
	return (false);
A livello di risultato è indifferente, perché "(false)" viene valutata come
espressione. Ovviamente risulta false.
Diciamo che le parentesi in questo caso sono semplicemente superflue.
-- 
~ "When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 controlli che faccio prima funzionano.....dove sbaglio?
Sbagli nel non aver pubblicato il codice della form relativo a questo codice
:)
Innanzitutto, il codice che hai scritto starà dentro una funzione. Ma non ne
vedo la dichiarazione.
Inoltre, immagino che sia associato ad un event-handler. Presumibilmente,
all'onsubmit della form o all'onclick del pulsante di submit.
Forse direttamente nel tag. Se così fosse, dovresti vedere se propaghi il
risultato della funzione che hai scritto, alla funzione anonima. Ovvero:
	<form onsubmit="validazione()">
E' sbagliato. Devi anteporre "return":
	<form onsubmit="return validazione()">
Dicasi la stessa cosa per l'onclick.
Se ciò che ti ho detto non ti è di aiuto a risolvere il tuo problema, prova
a fornire maggiori informazioni sul codice HTML e su come questa funzione è
collegata agli elementi in oggetto.


Grazie ragazzi per l'attenzione, allora ho estrapolato lo script e messo in 
una pagina vuota, si comporta alla stessa maniera, ecco il codice:
grazie.....
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<head>
<script Language="JavaScript" Type="text/javascript">
<!--
function validate(theForm) {
var radio_choice = false;
for (counter = 0; counter < theForm.pagamento.length; counter++)
{
if (theForm.pagamento[counter].checked)
radio_choice = true;
}
if (!radio_choice)
{
alert("Campo Metodo di pagamento non valido.");
theForm.pagamento.focus();
return (false);
}
return (true);
}
//-->
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="checkout.php?" 
onsubmit="return validate(this)" language="JavaScript">
  Bonifico Bancario
  <input name="pagamento" type="radio" value="bonifico" />
  Carta di credito
  <input name="pagamento" type="radio" value="carta" />
 <input name="Submit" type="submit" value="Prosegui &gt;&gt;"/>
</form>
</body></html>

ho trovato...l'errore era in
theForm.pagamento.focus();
pagamento e' un gruppo di radio e il metodo focus cosi non funziona ma 
funziona cosi:
theForm.pagamento[0].focus();
e setta il focus sul primo radio....
saluti e grazie