Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Somma campi con valori decimali

    Salve,

    utilizzo questo script trovato nel forum per sommare dei campi.

    Mi sono accorto però che non mi valorizza nel campo totale i valori decimali scritti nei campi da sommare:

    codice:
    <script language="javascript" type="text/javascript" >
    
    function cifre_decimali(x) {
    var c = String(Math.round(x*100));
    while (c.length < 3) c = '0' + c;
    return c.replace(/([0-9][0-9])$/,".$1");
    }
    
    function calcola1 () {
    var prezzo = parseFloat(document.registrationForm.totalefiscale1.value);
    var articoli = parseFloat(document.registrationForm.articoli1.value);
    var calcola_somma1 = 0.00;
    calcola_somma1 = Math.round(prezzo);
    document.registrationForm.tot1.value=cifre_decimali(calcola_somma1);
    tot()
    
    function calcola2 () {
    var prezzo = parseFloat(document.registrationForm.titoliannullati1.value);
    var articoli = parseFloat(document.registrationForm.articoli2.value);
    var calcola_somma2 = 0.00;
    calcola_somma2 = Math.round(prezzo);
    document.registrationForm.tot2.value=cifre_decimali(calcola_somma2);
    tot()
    }
    
    
    function tot() {
    document.registrationForm.totalegiornaliero.value = cifre_decimali(parseFloat(document.registrationForm.tot1.value)-parseFloat(document.registrationForm.tot2.value))
    }
    
    }
    </script>
    
    
    <form name="registrationForm" method="POST" action="Inserimento.asp">
    Totale Fiscale
    <input type="text" id="totalefiscale1" name="TotaleFiscale" onKeyUp="calcola1();" value="">
    <input type="hidden" size="4" name="articoli1" />
    <input type="hidden" name="tot1" type="text" value="0.00" />
    
    
    Titoli Annullati
    <input type="text" id="titoliannullati1" name="TitoliAnnullati" onKeyUp="calcola2();" value="">
    <input type="hidden" size="4" name="articoli2" />
    <input type="hidden" name="tot2" type="text" value="0.00" />
    
    
    Totale Giornaliero
    <input readonly="readonly" type="text" id="totalegiornaliero" name="TotaleGiornaliero" value="" >
    </form>
    Pippo Giacalone
    giacalone@tin.it

  2. #2
    Scusate ma ho postato un codice non perfettamente funzionante ....

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Articolo</title>
    
    
    <script language="javascript" type="text/javascript" >
    function cifre_decimali(x) {
    var c = String(Math.round(x*100));
    while (c.length < 3) c = '0' + c;
    return c.replace(/([0-9][0-9])$/,".$1");
    }
    
    function calcola1 () {
    //Prelevo il prezzo
    var prezzo = parseFloat(document.modulo.prezzo1.value);
    //Prelevo il numero articoli
    var articoli = parseFloat(document.modulo.articoli1.value);
    var calcola_somma1 = 0.00;
    //Calcolo la somma
    calcola_somma1 = Math.round(prezzo * articoli * 100)/100;
    //Scrivo la somma nel campo aggiungendo zero qual'ora non ci fossero
    document.modulo.tot1.value=cifre_decimali(calcola_somma1);
    tot()
    }
    
    function calcola2 () {
    //Prelevo il prezzo
    var prezzo = parseFloat(document.modulo.prezzo2.value);
    //Prelevo il numero articoli
    var articoli = parseFloat(document.modulo.articoli2.value);
    var calcola_somma2 = 0.00;
    //Calcolo la somma
    calcola_somma2 = Math.round(prezzo * articoli * 100)/100;
    //Scrivo la somma nel campo aggiungendo zero qual'ora non ci fossero
    document.modulo.tot2.value=cifre_decimali(calcola_somma2);
    tot()
    }
    
    function calcola3 () {
    //Prelevo il prezzo
    var prezzo = parseFloat(document.modulo.prezzo3.value);
    //Prelevo il numero articoli
    var articoli = parseFloat(document.modulo.articoli3.value);
    var calcola_somma3 = 0.00;
    //Calcolo la somma
    calcola_somma3 = Math.round(prezzo);
    //Scrivo la somma nel campo aggiungendo zero qual'ora non ci fossero
    document.modulo.tot3.value=cifre_decimali(calcola_somma3);
    tot()
    }
    
    function tot() {
    document.modulo.somma.value = cifre_decimali(parseFloat(document.modulo.tot1.value)+parseFloat(document.modulo.tot2.value)+parseFloat(document.modulo.tot3.value))
    }
    </script>
    </head>
    <body>
    <html>
    <head>
    </head>
    <body>
      <form name="modulo" method="get" action="">
    	<table border="1">
    	<tr>
    		<td>Prezzo</td>
    		<td>Quantita'</td>
    		<td>Prezzo Totale</td>
    	</tr>
    	<tr>
    	  <td><input name="prezzo" type="text" value="20.00" size="5" maxlength="5" readonly id="prezzo1" /></td>
    	  <td><input type="text" size="4"  name="articoli1" onKeyUp="calcola1()"; /></td>
    	  <td><input name="tot1" type="text" value="0.00" /></td>
    	</tr>
    	<tr>
    	    <td><input name="prezzo2" type="text" value="200.00" size="5" maxlength="5" readonly id="prezzo2" /></td>
    	    <td><input type="text" size="4"  name="articoli2" onKeyUp="calcola2()"; /></td>
    	    <td><input name="tot2" type="text" value="0.00" /></td>
    	</tr>
    	<tr>
    	    <td><input name="prezzo3" type="text" value="" size="5" maxlength="5" id="prezzo3" onKeyUp="calcola3()"; /></td>
    	    <td><input type="hidden" size="4"  name="articoli3"  /></td>
    	    <td><input name="tot3" type="text" value="0.00" /></td>
    	</tr>
    	<tr>
    		<td></td>
    		<td></td>
    		<td>Costo Totale:<input name="somma" type="text" value="0.00" /></td>
    	</tr>
    	</table>
    	</form>
    </body>
    </html>
    </body>
    </html>
    il problema è quando nel campo prezzo3 inserisco un valore con decimali ... nel campo somma non me li considera !!

    sapete consigliarmi come risolvere il problema ?
    Pippo Giacalone
    giacalone@tin.it

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Sara' perche' nel campo qualcuno digita la virgola al posto del punto decimale...

    parseFloat(document.modulo.prezzo3.value.replace(/,/g,"."))

    EDIT: come non detto, avevo letto male... comunque sei tu che gli dici di ignorare i decimali...


    calcola_somma3 = Math.round(prezzo);
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  4. #4
    Scusa br1, intanto grazie per la risposta

    ma come dovrei modificare quella riga affinche possa calcolare i decimali ?
    Pippo Giacalone
    giacalone@tin.it

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Hai un esempio poco sopra nello script, io comunque ti consiglio:

    calcola_somma3 = prezzo.toFixed(2);
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Grazie mille br1
    Pippo Giacalone
    giacalone@tin.it

  7. #7
    un'ultima cosa ...

    qui ho risolto per come mi hai suggerito:
    calcola_somma3 = prezzo.toFixed(2);

    qui invece come lo devo implementare ?
    calcola_somma2 = Math.round(prezzo * articoli * 100)/100;
    Pippo Giacalone
    giacalone@tin.it

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da peppeweb
    un'ultima cosa ...

    qui ho risolto per come mi hai suggerito:
    calcola_somma3 = prezzo.toFixed(2);

    qui invece come lo devo implementare ?
    calcola_somma2 = Math.round(prezzo * articoli * 100)/100;
    Non ci hai nemmeno provato...

    calcola_somma2 = (prezzo * articoli).toFixed(2)
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    ci ho provato e come .... ma senza riuscirci:

    Grazie br1
    Pippo Giacalone
    giacalone@tin.it

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.