Newsgroup: it.comp.lang.javascript
Titolo: Disabilitare/abilitare pulsanti radio

Un saluto a tutti,
non riesco a capire una cosa.
In una FORM (di cui sotto espongo il codice) ho bisogno di ottenere il 
seguente funzionamento:
ci sono due pulsanti RADIO chiamati con lo stesso nome (Aggiungi) in 
modo da evitare che vengano selezionati contemporaneamente; di default 
li rendo "DISABLED", e solo al variare (onchange) del campo SELECT 
inserisco un'istruzione che li rende attivi.
Il punto è che se inserisco un pulsante RADIO unico funziona tutto 
correttamente, mentre con 2 o più pulsanti radio l'onchange non funziona 
più.
Qualcuno sa dirmi il perchè e come ovviare a ciò ?
Grazie a tutti.
	wolfenstein
<FORM action="" method="" name="Modulo">
<TABLE border="1">
<TR>
   <TD>Codice</TD>
   <TD>Descrizione</TD>
   <TD>Prezzo</TD>
   <TD>Q.ta'</TD>
   <TD>Totale</TD>
   <TD>Aggiungi</TD>
</TR>
<TR>
   <TD>
     Caso 1
   </TD>
   <TD>
     Questo è il Caso 1
   </TD>
   <TD>
     <INPUT type="text" name="prezzo" Value="100.00">
   </TD>
   <TD>
     <SELECT name="qta" onchange="document.Modulo.Aggiungi.disabled = 
false; 
Modulo.totale.value=Modulo.qta.options[Modulo.qta.options.selectedIndex].value 
* parseFloat(Modulo.prezzo.value);">
     <OPTION value=0>0</OPTION>
     <OPTION value=1>1</OPTION>
     <OPTION value=2>2</OPTION>
     <OPTION value=3>3</OPTION>
     <OPTION value=4>4</OPTION>
     <OPTION value=5>5</OPTION>
     </SELECT>
   </TD>
   <TD>
     <INPUT name="totale" type="text" value="0.00" readonly>
   </TD>
   <TD align=center>
     <INPUT name="Aggiungi" type="radio" disabled onchange="javascript: 
Modulo.Aggiungi.disabled = false; Modulo.TotCase.value = 
parseFloat(Modulo.TotCase.value) + parseFloat(Modulo.totale.value)">
     <INPUT name="Aggiungi" type="radio" disabled onchange="javascript: 
Modulo.Aggiungi.disabled = false; Modulo.TotCase.value = 
parseFloat(Modulo.TotCase.value) - parseFloat(Modulo.totale.value)">
   </TD>
</TR>
<TR>
   <TH colspan="4">Totale scelte Caso 1
   <TD>
     <INPUT class="FormTotale" name="TotCase" type="text" value="0.00" 
readonly>
   </TD>
   <TH colspan="2">
     <INPUT name="Acquista" type="button" value="Acquista" onclick="">
   </TD>
</TR>
<TR>
   <TH colspan="4">TOTALE GENERALE SCELTE
   <TD>
     <INPUT class="FormTotale" name="TotGen" type="text" value="0.00" 
readonly>
   </TD>
   <TH colspan="2">
</TR>
</TABLE>
</FORM>

 false; document.Modulo.Aggiungi[1].disabled = false;
Funziona benissimo !!! Perfetto. :-)
E come ci si comporta se la stessa cosa la si vuol fare in una tabella 
generata dinamicamente come nell'esempio sottostante:
================== INIZIO PAGINA HTML =======================
<HTML>
<HEAD>
   <TITLE>Esempio</TITLE>
   <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <SCRIPT type="text/javascript" src="case.js"></SCRIPT>
</HEAD>
<BODY>
<FORM action="" method="" name="Modulo">
<TABLE border="1">
   <TR>
     <TD>Codice</TD>
     <TD>Descrizione</TD>
     <TD>Prezzo</TD>
     <TD>Q.ta'</TD>
     <TD>Totale</TD>
     <TH colspan="2">Aggiungi</TD>
   </TR>
   <SCRIPT type="text/javascript">
   for (i=0;i<=articolo.length;i++)
   {
     document.write('<tr><td>',
     articoli[i].cod,
     '</td><td align=left><a href="#" onclick="open(',
     'articoli[',i,'].pag,',
     '\'\',',
     '\'width=',
     600,
     ',height=',
     450,
     ',left=',
     ((screen.width - 600) / 2),
     ',top=',
     ((screen.height - 450) / 2),
     ',resizable,scrollbars\'',
     ');">',
     articoli[i].descr,
     '</a></td><td align=right>',
     articoli[i].prz,
     '</td><td><SELECT name=\"qta'+[i]+'\" onchange=\"javascript: 
document.Modulo.Aggiungi[',i,'].disabled = false; 
Modulo.totale'+[i]+'.value=Modulo.qta'+[i]+'.options[Modulo.qta'+[i]+'.options.selectedIndex].value 
* parseFloat(',articoli[i].prz,');\"><OPTION value=\'0\'>',0,
     '</OPTION><OPTION value=\'1\'>',1,
     '</OPTION><OPTION value=\'2\'>',2,
     '</OPTION><OPTION value=\'3\'>',3,
     '</OPTION><OPTION value=\'4\'>',4,
     '</OPTION><OPTION value=\'5\'>',5,
     '</OPTION></SELECT></td><td><INPUT name=\"totale'+[i]+'\" 
type=\"text\" value=\"0.00\" align=\"right\" readonly></TD><TD 
align=center><INPUT name=\"Aggiungi'+[i]+'\" type=\"radio\" disabled 
onchange=\"javascript: Modulo.TotCase.value = 
parseFloat(Modulo.TotCase.value) + 
parseFloat(Modulo.totale'+[i]+'.value)\"></TD><TD align=center><INPUT 
name=\"Aggiungi'+[i]+'\" type=\"radio\"disabled  onchange=\"javascript: 
Modulo.TotCase.value = parseFloat(Modulo.TotCase.value) - 
parseFloat(Modulo.totale'+[i]+'.value)\"></TD></TR>');
   }
</SCRIPT>
   <TR>
     <TH colspan="4">Totale acquisti Case
     <TD>
       <INPUT name="TotCase" type="text" value="0.00" readonly>
     </TD>
     <TH colspan="2"><INPUT name="Acquista" type="button" 
value="Acquista" onclick="">
     </TD>
   </TR>
   <TR>
     <TH colspan="4">TOTALE GENERALE ACQUISTI
     <TD><INPUT name="TotGen" type="text" value="0.00" readonly></TD>
     <TH colspan="2">
   </TR>
</TABLE>
</FORM>
</BODY>
</HTML>
================== FINE PAGINA HTML =======================
================== INIZIO FILE "case.js" =======================
// PARTE DA MODIFICARE
var articoli=new Array()
articoli[0]=new articolo("1","Case 1","1.00","Dettagli/1.html")
articoli[1]=new articolo("2","Case 2","2.00","Dettagli/2.html")
articoli[2]=new articolo("3","Case 3","3.00","Dettagli/3.html")
articoli[3]=new articolo("4","Case 4","4.00","Dettagli/4.html")
articoli[4]=new articolo("5","Case 5","5.00","Dettagli/5.html")
// NON MODIFICARE QUI SOTTO!
function articolo(codice,descrizione,prezzo,pagina)
{
this.cod=codice
this.descr=descrizione
this.prz=prezzo
this.pag=pagina
}
================== FINE FILE "case.js" =======================