Scrivere in un DIV in base alle scelte fatte in due select

navajo75

Utente Attivo
16 Mar 2012
103
1
18
Ciao a tutti,

tempo fa ho avuto la necessità di stampare il prezzo in un DIV, a seconda di ciò che viene scelto da un menù a tendina "quantità" e da uno "modello".
Insomma, in base alla quantita ed al modello scelti si determina un prezzo.
Premetto di non essere un programmatore e quindi ero riuscito a trovare una soluzione, grazie ad un aiuto ed era venuta fuori una cosa del genere:

HTML:
<script type="text/javascript">
  function calcola(mod,qt){   
  var m = parseFloat(mod.options[mod.selectedIndex].value.split("|")[1])   
  var q = parseInt(qt.options[qt.selectedIndex].value)   
  var valuta = "€ ";   
  var operazione = (m*q);     
  var zeri = ",00";   
  var somma = valuta+operazione+zeri;    
  document.getElementById('prezzo').innerHTML=somma;   document.getElementById('price').value=operazione; }
</script>

<div id="campo_quantita">           
  <label>           
    <select name="quantita" id="quantita" onchange="if(this.options.selectedIndex!=0 &&    document.getElementById('modelloprezzo').options.selectedIndex!=0 ){calcola(document.getElementById('modelloprezzo'), this)}">             
      <option value="seleziona">Quantità</option>             
      <option value="100">100</option>             
      <option value="200">200</option>             
      <option value="300">300</option>             
      <option value="500">500</option>             
      <option value="1000">1.000</option>           
    </select>           
  </label>         
</div>

<div id="campo_modello">           
  <label>           
    <select name="modelloprezzo" id="modelloprezzo" onchange="if(this.options.selectedIndex!=0 && document.getElementById('quantita').options.selectedIndex!=0){calcola(this, document.getElementById('quantita'))}">            
      <option value="seleziona">Modello</option>             
      <option value="Senza lembi|1.2">Senza lembi</option>            
      <option value="Un lembo|1.3">Un Lembo</option>             
      <option value="Due lembi incollati|1.6">Due lembi incollati</option>      
</select>           
</label>         
</div>

<div id="prezzo">€ 0,00</div>
Ha funzionato, fintantochè il prezzo raddoppiava, triplicava ecc... a seconda della quantità selta. Sarebbe a dire se 100 pezzi costano 120, 200 costano 240, 300 costano 360 e così via.
Ora però il mio cliente mi ha fornito i prezzi definitivi e 100 pezzi costano 120, 200 costano 160, 300 costano 195, 500 costano 260 e 1000 costano 390.
Come posso fare?

Saluti,
Marco
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
forse ti basta aggiornare i value delle option

HTML:
<option value="120">100</option>             
            <option value="160">200</option>             
            <option value="195">300</option>             
            <option value="260">500</option>             
            <option value="390">1.000</option>
 

navajo75

Utente Attivo
16 Mar 2012
103
1
18
Grazie per la tua risposta, ma purtroppo non è così semplice.
Questo è ciò che dovrebbe risultare...

Senza lembi:
100 pezzi = € 120
200 pezzi = € 160
300 pezzi = € 195
500 pezzi = € 260
1000 pezzi = € 390

Un lembo:
100 pezzi = € 130
200 pezzi = € 180
300 pezzi = € 225
500 pezzi = € 295
1000 pezzi = € 450

Due lembi incollati:
100 pezzi = € 160
200 pezzi = € 225
300 pezzi = € 290
500 pezzi = € 430
1000 pezzi = € 690

Saluti,
Marco
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
puoi provare mettendo i var prezzi in un array
la funzione javascript :
Codice:
<script type="text/javascript">
    function calcola(mod,qt){   
        var prezzi = new Array(
        "120,160,195,260,390",
        "130,180,225,295,450",
        "160,225,290,430,690");
        
        var m = mod.options[mod.selectedIndex].value;   
        var q = qt.options[qt.selectedIndex].value;   
        
        var p = prezzi[m].split(',');
        var prezzo = p[q];
        
        document.getElementById('prezzo').innerHTML="&euro; " + prezzo + ",00";  
    }
</script>
i value cambieranno cosi :
Codice:
<option value="seleziona">Quantit&aacute;</option>             
            <option value="0">100</option>             
            <option value="1">200</option>             
            <option value="2">300</option>             
            <option value="3">500</option>             
            <option value="4">1.000</option>
Codice:
<option value="seleziona">Modello</option>             
            <option value="0">Senza lembi</option>            
            <option value="1">Un Lembo</option>             
            <option value="2">Due lembi incollati</option>
 

navajo75

Utente Attivo
16 Mar 2012
103
1
18
GRANDE!!!
FUNZIONA!!!
Un'info... credo che il mio cliente vorrà aggiungere un altro modello, con però solo due prezzi e due quantità (500 e 1000).
Prevedo d'incasinarmi, qualora mi avanzasse questa richiesta.
Posso in caso riagganciarmi a questo thread, sperando nel tuo aiuto o ne dovrò aprire uno nuovo.

Grazie ancora per lo straordinario aiuto.
Saluti,
Marco