Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Calcolo in tempo reale

  1. #1
    Utente di HTML.it L'avatar di Grinder
    Registrato dal
    Mar 2003
    Messaggi
    1,374

    Calcolo in tempo reale

    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!

  2. #2
    Utente di HTML.it L'avatar di Grinder
    Registrato dal
    Mar 2003
    Messaggi
    1,374
    C'è nessiunoooooo?

  3. #3
    Utente di HTML.it L'avatar di Grinder
    Registrato dal
    Mar 2003
    Messaggi
    1,374
    Ho aggionato lo 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 = "€"
    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.abs(totale)+Math.abs(valore));
    } else {
    // sottrazione se non è selezionato
    totale = (Math.abs(totale)-Math.abs(valore));
    }
    }
    // popolo lo span in base al totale modificato
    if(document.all.prezzo) { 
    document.all.prezzo.innerHTML = (Math.round((totale)*100)/100+valuta).replace(/\./, ",");
    }
    if(document.all.prezzo_barra) { 
    document.all.prezzo_barra.innerHTML = (Math.round((totale)*100)/100+valuta).replace(/\./, ",");
    } 
    if(document.all.prezzo_piede) { 
    document.all.prezzo_piede.innerHTML = (Math.round((totale)*100)/100+valuta).replace(/\./, ",");
    }
    if(document.all.rata) { 
    document.all.rata.innerHTML = Math.round(totale/mesi)+valuta;
    }
    if(document.all.rata_barra) { 
    document.all.rata_barra.innerHTML = Math.round(totale/mesi)+valuta;
    }
    if(document.all.rata_piede) { 
    document.all.rata_piede.innerHTML = Math.round(totale/mesi)+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.abs(totale)-Math.abs(vecchio_valore_radio));
       totale = (Math.abs(totale)+Math.abs(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 = (Math.round((totale)*100)/100+valuta).replace(/\./, ",");
    }
    if(document.all.prezzo_barra) { 
    document.all.prezzo_barra.innerHTML = (Math.round((totale)*100)/100+valuta).replace(/\./, ",");
    } 
    if(document.all.prezzo_piede) { 
    document.all.prezzo_piede.innerHTML = (Math.round((totale)*100)/100+valuta).replace(/\./, ",");
    }
    if(document.all.rata) { 
    document.all.rata.innerHTML = Math.round(totale/mesi)+valuta;
    }
    if(document.all.rata_barra) { 
    document.all.rata_barra.innerHTML = Math.round(totale/mesi)+valuta;
    }
    if(document.all.rata_piede) { 
    document.all.rata_piede.innerHTML = Math.round(totale/mesi)+valuta;
    } else {
    return false;
    }
    }
    //-->
    </script>
    Il punto è che cambiando due o più componenti e poi tornando al prezzo base, il sistema si blocca! Perchè???

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.