perchè non aggiorna il totale?

djjunior

Utente Attivo
24 Lug 2004
99
1
8
Salve,
ho un totale che si aggiorna mediante vari script e utilizzando la funzione
window.onkeypress = setInterval('prz();tot()',100);
dove le funzioni prz (varia se cambia la zona di trasporto) e tot (si aggiorna sommando le nuove spese di spedizione etc) .
Ora avevo messo una funzione attivabile mediante checkbox per il ritiro in sede, cioè dovrebbe impostare a zero le spese di spedizione e ricalcolare il totale, eccola:
Codice:
var deposito;
function rit(v) {
  if(v) {
    deposito = document.getElementById('speseconsegna').innerHTML;
    document.getElementById('speseconsegna').innerHTML = 0;
    document.getElementById('spesecs').value = 0; 
    var sm = document.form.sommass.value;
    var sc = document.form.spesecs.value;
    var pagamento = parseFloat(sm) - parseFloat(sc);
    var pg = pagamento.toFixed(2);  
    var paga = pg.replace('.',','); 
    document.getElementById('totalepag').value = pg;
    document.getElementById('totalepagare').innerHTML = pg;
    } else {
    document.getElementById('speseconsegna').innerHTML = deposito;
    document.getElementById('spesecs').value = deposito;
    var sm = document.form.sommass.value;
    var sc = document.form.spesecs.value;
    var pagamento = parseFloat(sm) + parseFloat(sc);
    var pg = pagamento.toFixed(2);  
    var paga = pg.replace('.',','); 
    document.getElementById('totalepag').value = pg;
    document.getElementById('totalepagare').innerHTML = pg;
  }
}
solo che quest'ultima cozza (credo) con le funzioni precedenti, se spunto il checkbox di ritiro in sede, vedo al momento del check il cambio per pochissimi istanti, quindi non aggiornando in modo definitivo il totale.
Ecco le altre funzioni:
Codice:
window.onkeypress = setInterval('prz();tot()',100);

function prz(){

var cap = document.getElementById('caps').value;

if (cap == 87100) {

ma = 1
mb = 2.4
mc = 2.9
md = 3.3
me = 4.2
mf = 7.5
mg = 14

} else if (cap == 87036) {

ma = 1
mb = 2.4
mc = 2.9
md = 3.3
me = 4.2
mf = 7.5
mg = 14

} else { 

ma = 5.5
mb = 7.5
mc = 9
md = 9.6
me = 9.6
mf = 11.4
mg = 13.7
}

var maa = ma.toFixed(2);  
var maaa = maa.replace('.',','); 

var mbb = mb.toFixed(2);  
var mbbb = mbb.replace('.',','); 

var mcc = mc.toFixed(2);  
var mccc = mcc.replace('.',','); 

var mdd = md.toFixed(2);  
var mddd = mdd.replace('.',','); 

var mee = me.toFixed(2);  
var meee = mee.replace('.',','); 

var mff = mf.toFixed(2);  
var mfff = mff.replace('.',','); 

var mgg = mg.toFixed(2);  
var mggg = mgg.replace('.',','); 


var pes = document.getElementById('pesototales').value;

if(pes<=100){

document.getElementById('speseconsegna').innerHTML = maa; 
document.getElementById('spesecs').value = maa;

          } else if(pes>101 && pes<=350) {  
         
document.getElementById('speseconsegna').innerHTML = mbb;     
document.getElementById('spesecs').value = mbb;

          } else if(pes>351 && pes<=1000) {  
         
document.getElementById('speseconsegna').innerHTML = mcc;    
document.getElementById('spesecs').value = mcc; 
          
          } else if(pes>1001 && pes<=2000) {  
         
document.getElementById('speseconsegna').innerHTML = mdd;    
document.getElementById('spesecs').value = mdd; 
          
          } else if(pes>2001 && pes<=3000) {  
         
document.getElementById('speseconsegna').innerHTML = mee;    
document.getElementById('spesecs').value = mee; 
            
          } else if(pes>3001 && pes<=10000) {  
         
document.getElementById('speseconsegna').innerHTML = mff;    
document.getElementById('spesecs').value = mff; 
                          
          } else if(pes>10001 && pes<= 20000) {  
         
document.getElementById('speseconsegna').innerHTML = mgg;    
document.getElementById('spesecs').value = mgg; 

          } else if(pes>20001) {   

window.alert('Il peso della spedizione supera i 20Kg')

} 
}

function tot(){

var sm = document.form.sommass.value;
var sc = document.form.spesecs.value;
var pagamento = parseFloat(sm) + parseFloat(sc);


if(isNaN(pagamento)){

document.getElementById('totalepagare').innerHTML = 0;
document.getElementById('totalepag').value = '';

}else{

var pg = pagamento.toFixed(2);  
var paga = pg.replace('.',','); 
document.getElementById('totalepag').value = pg;
document.getElementById('totalepagare').innerHTML = paga;
}
}
Come posso ovviare o far coesistere le suddette funzioni?
Grazie
 
Ciao djjunior,
di javascript non ci capisco una mazza però se fossi in te opterei con una checkbox dinamica del tipo:
se metto il flag effettuo un redirect indicando nella querystring una variabile tipo spedizione=no

quindi mediante calcolo in semplice VB sottraggo le spese di spedizione:
Codice:
If Request("spedizione") = "no" Then
   totale = totale
Else
   totale = spedizione + totale
End If

Esempio: http://win.astro-forniture.it/default.asp?frame=step1&Prodotto=4&gomma=si
Clicca su "Gomma" SI/NO per modificare la visualizzazione

Codice:
<input type="radio" name="spedizione" value="si" onClick="parent.location = 'http://www.subitofoto.it/public/photomanager/upload/ordine1.asp?cartella=7_rossi&ordini=62496952'"  checked='checked' /> Si<br />

<input type="radio" name="spedizione" value="no" onClick="parent.location = 'http://www.subitofoto.it/public/photomanager/upload/ordine1.asp?cartella=7_rossi&ordini=62496952'"  /> No<br />

Fammi sapere, se va bene sposto la discussione in ASP :byebye:
 
...ho visto che nel link prova hai effettuato la modifica, ottimo lavoro, come vedi a volte basta un po di inventiva.
Ti consiglio di mettere " checked='checked'" su ritiro in sede: NO.

Al prossimo tips :byebye:
 

Discussioni simili