Un saluto a tutti,
vorrei modificare questo script per preventivi online in modo che possa funzionare con gli euro. Ho provato a fare alcune prove, seguendo precedenti post, senza riuscire a risolvere il problema: mi considera e somma solo gli interi.
Grazie_datalight
================================================== ============
<HTML>
<HEAD>
<TITLE>Preventivi interattivi on-line</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-- // Nascondo lo script ai vecchi browser
// Funzione che crea un array contenente n elementi
function MakeArray(n) {
this.length = n;
for(var i = 1; i <= n; i++) this[i] = 0;
return this
}
// Funzione che calcola l'IVA del 19% e la somma al totale
function tassalo(num) {
// Se l'iva e' selezionata (checked) la calcolo
if(num) {
if(document.preventivo.TASSE.checked) {
document.preventivo.quantoiva.value=Math.round(19* num)/100;
}
else document.preventivo.quantoiva.value=0;
}
// A questo punto faccio il totale.
var temp=0;
if(document.preventivo.costotot.value.length != 0) {
temp+=parseFloat(document.preventivo.costotot.valu e);
}
if(document.preventivo.quantoiva.value.length != 0) {
temp+=parseFloat(document.preventivo.quantoiva.val ue);
}
document.preventivo.costototiva.value=temp;
}
// Questa funzione fa la somma del costo dei prodotti
// che sono stati selezionati.
function calcola(sel) {
// Crea un array in cui metto i prezzi passati come argomenti.
var Prezzi_Array = new MakeArray(calcola.arguments.length);
for(var i=1; i<calcola.arguments.length; i++) {
Prezzi_Array[i-1] = parseInt(calcola.arguments[i]);
}
// Prendo l'ultimo carattere del nome dell'elemento che ha
// chiamato la funzione (quanti0, quanti1 daranno 0, 1 ecc.)
// per sapere quale selettore è stato cambiato.
var line=sel.name.charAt(sel.name.length-1);
// Ora se il quantiX di tale linea ha una lunghezza, significa che c'e'
// un valore scritto dentro. Per accaderci si usa "quanti"+line che
// ci dara' quanti0, quanti1 ecc.
if(document.preventivo["quanti"+line].value.length != 0) {
// Controllo che sia stato scritto un numero (se non è un numero
// risultera' un NaN, ovvero Not a Number), e che sia diverso da
// zero. Se non è un numero, visualizzo una finestra di alert.
var quanti=parseInt(document.preventivo["quanti"+line].value);
if((quanti == 0) || isNaN(quanti)) {
alert("La quantita' alla linea "+(++line)+" non e' un numero!");
return;
}
var pprez=0;
// Trovo il prezzo del prodotto selezionato.
pprez = Prezzi_Array[document.preventivo["prodotto"+line].selectedIndex];
// Controllo che sia stato selezionato qualcosa, in caso contrario
// visualizzo una finestra di alert con l'errore.
if((pprez == 0) || isNaN(pprez)) {
alert("Il prodotto alla linea "+(++line)+" non e' stato scelto!");
return;
}
// Scrivo il prezzo singolo e il totale
document.preventivo["prodprezzo"+line].value = pprez;
document.preventivo["prodtot"+line].value = eval(pprez*quanti);
}
var i = 0;
var total = 0;
// Calcolo il costo totale sommanto i totali dei singoli prodotti
while(document.preventivo["prodtot"+i]) {
if(document.preventivo["prodtot"+i].value.length != 0) {
total+=parseInt(document.preventivo["prodtot"+i].value);
}
i++;
}
document.preventivo.costotot.value = total;
// Calcoliamo l'iva eventuale e il totale ivato.
tassalo(total);
}
// Fine della parte nascosta. -->
</SCRIPT></HEAD>
<BODY>
<CENTER><H3>Preventivi interattivi on-line</H3>
<FORM NAME="preventivo"><TABLE>
<TR><TD ROWSPAN=8><PRE> </PRE></TD>
<TH ALIGN=RIGHT>Quant.</TH><TH ALIGN=center>Prodotto</TH>
<TH ALIGN=center>Prezzo</TH><TH ALIGN=center>Totale</TH>
<TH ROWSPAN=8><PRE> </PRE></TD></TR>
<TR><TD VALIGN=TOP ALIGN=RIGHT>
<INPUT TYPE=TEXT NAME="quanti0" value="1" SIZE=3 onChange='calcola(this, "5.50", "10.25", "9.00", "15.75");'>
</TD><TD VALIGN=TOP>
<SELECT NAME="prodotto0" onChange='calcola(this, "5.50", "10.25", "9.00", "15.75");'>
<OPTION>prodotto 1 <OPTION>prodotto 2 <OPTION>prodotto 3 <OPTION>prodotto 4
<OPTION SELECTED>seleziona un prodotto</SELECT></TD>
<TD VALIGN=TOP><INPUT TYPE=TEXT NAME="prodprezzo0" size=8 onFocus="this.blur();"></TD>
<TD VALIGN=TOP><INPUT TYPE=TEXT NAME="prodtot0" size=8 onFocus="this.blur();"></TD>
</TR><TR><TD VALIGN=TOP ALIGN=RIGHT>
<INPUT TYPE=TEXT NAME="quanti1" value="1" SIZE=3 onChange='calcola(this, "5.50", "10.25", "9.00", "15.75");'>
</TD><TD VALIGN=TOP>
<SELECT NAME="prodotto1" onChange='calcola(this, "5.50", "10.25", "9.00", "15.75");'>
<OPTION>prodotto 1 <OPTION>prodotto 2 <OPTION>prodotto 3 <OPTION>prodotto 4
<OPTION SELECTED>seleziona un prodotto</SELECT></TD>
<TD VALIGN=TOP><INPUT TYPE=TEXT NAME="prodprezzo1" SIZE=8 onFocus="this.blur();"></TD>
<TD VALIGN=TOP><INPUT TYPE=TEXT NAME="prodtot1" SIZE=8 onFocus="this.blur();"></TD>
</TR><TR><TD VALIGN=TOP ALIGN=RIGHT>
<INPUT TYPE=TEXT NAME="quanti2" value="1" SIZE=3 onChange='calcola(this, "5.50", "10.25", "9.00", "15.75");'>
<TD VALIGN=TOP>
<SELECT NAME="prodotto2" onChange='calcola(this, "5.50", "10.25", "9.00", "15.75");'>
<OPTION>prodotto 1 <OPTION>prodotto 2 <OPTION>prodotto 3 <OPTION>prodotto 4
<OPTION SELECTED>seleziona un prodotto</SELECT></TD>
<TD VALIGN=TOP><INPUT TYPE=TEXT NAME=prodprezzo2 size=8 onFocus="this.blur();"></TD>
<TD VALIGN=TOP><INPUT TYPE=TEXT NAME=prodtot2 size=8 onFocus="this.blur();"></TD>
</TR><TR><TD></TD><TD></TD><TH>Costo</TH>
<TD><INPUT TYPE=TEXT NAME=costotot SIZE=8 onFocus="this.blur();"></TD>
</TR><TR><TH COLSPAN=2 ALIGN=RIGHT>Ivato
<INPUT TYPE=checkbox name=TASSE onClick="tassalo(document.preventivo.costotot.valu e);">
</TH><TH>Iva</TH>
<TD><INPUT TYPE=TEXT NAME=quantoiva SIZE=8 onFocus="this.blur();"></TD>
</TR><TR><TD></TD><TD></TD></TR><TR><TD></TD><TD></TD><TH>Totale</TH>
<TD><INPUT TYPE=TEXT NAME=costototiva SIZE=8 onFocus="this.blur();"></TD>
</TR></TABLE></FORM></CENTER>
</BODY>
</HTML>
================================================== ============
![]()
![]()
![]()
![]()
![]()