NELA MIA PAGINA ho questo script:
codice:
<script language="JavaScript">
// valore iniziale in euro
var valore_iniziale = <%=replace((formatnumber(rs_modello("prezzo_offerta"),2)),",",".")%>;
// totale iniziale
var totale = valore_iniziale;
// valuta
var valuta = "&euro;"
var vecchio_valore_radio=0;
var mesi = <%=rs_modello("rate")%>

function modifica(check_box) {

if(totale>=valore_iniziale && check_box!=="") {
document.all.prezzo.innerHTML = "";
valore = document.Form_Controllo_Prezzo[check_box].value;
if(document.Form_Controllo_Prezzo[check_box].checked == true) {
// somma se selezionato
totale = (Math.round(totale)+Math.floor(valore));
} else {
// sottrazione se non è selezionato
totale = (Math.floor(totale)-Math.floor(valore));
}
}
// popolo lo span in base al totale modificato
if(document.all.prezzo) { 
document.all.prezzo.innerHTML = totale+valuta;
}
if(document.all.prezzo2) { 
document.all.prezzo2.innerHTML = totale+valuta;
} 
if(document.all.prezzo3) { 
document.all.prezzo3.innerHTML = totale+valuta;
} else {
return false;
}
}

// ciclo per verificare per aggiungere il valore del radio selezionato 
// e sottrarre il vecchio valore selezionato uso: <input onclick("verifica_radio(this.name)")

   var vecchio_valore_radio = 0;

   function setta_vecchio_valore(nome_radio) {
   for (i=0;i<document.Form_Controllo_Prezzo[nome_radio].length;i++){
   if (document.Form_Controllo_Prezzo[nome_radio][i].checked==true)    {
   vecchio_valore_radio = document.Form_Controllo_Prezzo[nome_radio][i].value;
   break
   } else {
   vecchio_valore_radio = 0;
   } 
   }
   }
   
   function verifica_radio(nome_radio) {
   for (i=0;i<document.Form_Controllo_Prezzo[nome_radio].length;i++){
   if (document.Form_Controllo_Prezzo[nome_radio][i].checked==true && totale>=valore_iniziale)    {
   document.all.prezzo.innerHTML = "";
   totale = (Math.floor(totale)-Math.floor(vecchio_valore_radio));
   totale = (Math.floor(totale)+Math.floor(document.Form_Controllo_Prezzo[nome_radio][i].value));
   //vecchio_valore_radio = document.Form_Controllo_Prezzo[nome_radio][i].value;
   break
   } 
   }
   // popolo lo span in base al totale modificato
if(document.all.prezzo) { 
document.all.prezzo.innerHTML = totale+valuta;
}
if(document.all.prezzo2) { 
document.all.prezzo2.innerHTML = totale+valuta;
} 
if(document.all.prezzo3) { 
document.all.prezzo3.innerHTML = totale+valuta;
} else {
return false;
}
}
//-->
</script>
Che viene richiamato dal radiobutton o dal checkbox così:
codice:
<input style="margin-right: 8px;" name="INP_Sistema_Operativo" onfocus="setta_vecchio_valore(this.name)"
onclick="verifica_radio(this.name);" value="0" checked="checked" type="radio">
Dunque, esistono 3 tipologie di componenti: componenti base, componenti aggiuntivi e componenti variabili. I primi hanno valore 0 perchè sono già compresi nel costo totale (e sono spuntati fin dall'inizio e non hanno parte di testo in grassetto), i secondi hanno per valore la differenza tra il costo del componente variabile meno il costo del componente base (che può essere positivo o negativo dunque)...gli ultimi hanno per valore il prezzo pieno perchè non sono compresi di base come configurazione (non sono nemmeno spuntati all'inizio). Qual è il problema? Il problema è che se fai una variazione di componente base con la sua variabile e poi torni sul base il meccanismo si blocca tutto! Però se parti con l'aggiungere un componente aggiuntivo funziona tutto perfettamente. Qualcuno potrebbe aiutarmi? C'è poi il problema dei decimali nel prezzo....come faccio? Se tolgo Math.round non funziona più niente!