Newsgroup: it.comp.lang.javascript
Titolo: Problema con campo input radio..

ho il seguente codice... perchè all'istruzione alert (pagamentox), viene
visualizzata la finestra "undifined" ?
Ciao e grazie.
<script>
 var reIntger = /^\s*\d+$/
 function chkform2(){
var pagamentox=document.form2.pagamento.value
alert (pagamentox);
      if (pagamentox== '') {  alert('Pagamento Obbligatorio')
          document.form2.pagamento.focus();
     return false
    }
document.form2.submit();
return true
 }
</script>
 <form name='form2' method='post' action='xxx.php' onSubmit='return false'>
<table width='400' border='0' align='center' cellpadding='3'
cellspacing='0'>
<tr>
<td bgcolor='#99B9D8' width='80'><font color='#000000'>Tipo
Pagamento</font></td>
<td width='200'></td>
<td width='100'></td>
 </tr>
<tr>
<td width='120' align='left'><font color=#000000'>
<input type='radio' name='pagamento' value=1>Bonifico Bancario</font></td>
<td width='200' align='left'><font color='#000000'>Coordinate
Bancarie.......</font></td>
</tr>
<tr>
<td><img src='linea.gif' width='10' height='4'></td>
</tr>
<tr>
<td width='120' align='left'><font color=#000000'>
<input type='radio' name='pagamento' value=3>C/C Postale</font></td>
<td width='200' align='left'><font color='#000000'>Boleltino n... intestato
a..........</font></td>
</tr>
<tr>
<td><img src='linea.gif' width='10' height='4'></td>
</tr>
<tr>
<td width='120' align='left'><font color=#000000'>
<input type='radio' name='pagamento' value=2>Contrassegno</font></td>
<td width='200' align='left'><font color='#000000'></font></td>
<td width='80'><font color='#000000'>Spese :1.50</font></td>
</tr>
<tr>
<td><img src='linea.gif' width='10' height='4'></td>
</tr>
<tr><td>
<label>
<input type='image' src='images/conferma.jpg' name='conferma'
onClick='javascript:chkform2()'>
</label>
 </div></td>
</tr>
</table>
</form>

  var reIntger = /^\s*\d+$/
Qui mancherebbe il ; anche se non č il problema.
Per i radio button non esiste il "value", ma lo stato di "checked". Devi 
quindi passarti tutti gli elementi cercando quello segnato.
A questo punto rilevi il valore:
if (document.form2.pagamento[0].checked)
	{
		document.form2.pagamento[0].value;
	}
Infine ti invito a cambiare approccio. Le verifiche sugli input vanno 
fatte con onSubmit(), poiché magari l'utente piů spiccio preferisce 
premere INVIO piuttosto che cliccare sul pulsante. Inoltre non so se 
mettere un "return false" sull'evento "onSubmit" blocchi anche il metodo 
.submit() chiamato sulla form stessa. Di logica non dovrebbe! (Su 
firefox cerca di caricare xxx.php, su IE ri-carica la pagina stessa...)
Alex.

 perchè all'istruzione alert (pagamentox), viene visualizzata la finestra "undifined" ?
Perché un input di tipo radio presuppone più potenziali value, dunque
a seconda di quanti sono (nel tuo caso sono 3), js li carica in un
array. ciascun valore dell'array ha le sue proprietà, tra cui value e
checked.
Io ho risolto questo problema "al contrario": ciclo l'array degli
input radio e conto quanti non sono selezionati; se il numero è minore
degli elementi radio invio il form, altrimenti avverto l'utente di
scegliere un tipo di pagamento.
function chkform2() {
	var n, i, pagam, vuoti = 0;
	n = document.form2.pagamento;
	for (i=0;i<n.length;i++) {
		if (n[i].checked == false) {
			vuoti++;
		} else {
			pagam = n[i].value;
		}
	}
	if (vuoti < n.length) {
		alert("Hai scelto di pagare tramite "+pagam+".");
		//document.form2.submit();
	} else {
		alert("ATTENZIONE\n\nScegliere un tipo di pagamento.");
		return false;
	}
}
l'oggetto radio è spiegato bene qui:
http://www.devguru.com/technologies/javascript/11273.asp
raenkrus