Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885

    dopo la somma compare NaN nel campo totale e arrotonda i decimali una volta contato

    ciao ,
    sono riuscito a effettuare dei calcoli prendendo dei valori dei campi in un form e a inserire il totale.
    ma ora chiedo il vodtro aiuto per 2 problemi.

    1:
    il campo totale come valore di default ha "NaN" ('not a number suppongo'), quel campo dovrà essere vuoto e solo ed esclusivamente se qualcuno vuole potrà vedere qualcosa!

    2:
    ho convertito il campo in un float, ma arrotonda i calcoli non considerando i decimali dopo la virgola.

    Codice PHP:

    <script Language="JavaScript" Type="text/javascript">
            function 
    calcolatotale() {
            
                var 
    parseFloat(document.getElementById('importo').value);
                var 
    parseFloat(document.getElementById('acconto').value);
                if (
    == "" || == undefined){
                    
    0,00;
                }
                var 
    parseFloat(document.getElementById('nota').value);
                if (
    == "" || == undefined){
                    
    0,00;
                }
                var 
    b-(c+d);
                
    document.invio_formconta.totale.valueparseFloat(h).toFixed(2).replace('.','.');
            }



    //--></script> 
    qualcuno mi saprebbe spiegare il perchè di queste 2 stranezze?


    grazie anticipatamente

  2. #2
    codice:
    <script Language="JavaScript" Type="text/javascript">
            function calcolatotale() {
            
                var b = parseFloat(document.getElementById('importo').value);
                var c = parseFloat(document.getElementById('acconto').value);
                if (c == "" || c == undefined){
                    c = 0.00; // ci va il punto decimale, non la virgola!
                }
                var d = parseFloat(document.getElementById('nota').value);
                if (d == "" || d == undefined){
                    d = 0.00;// ci va il punto decimale, non la virgola!
                }
                var h = b-(c+d);
                document.invio_formconta.totale.value= parseFloat(h).toFixed(2).replace('.','.');
            }
    //--></script>
    Per quanto riguarda la non considerazione per i decimali, non &egrave; che tu nei campi scrivi i numeri mettendo la virgola al posto del punto?
    Se lo fai, devi prevedere nella funzione la sostituzione della virgola con il punto prima di dare in pasto il valore alla parseFloat!

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  3. #3
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    non è che tu nei campi scrivi i numeri mettendo la virgola al posto del punto?
    humm .... forse si

    i campi prevedono siam , che .
    ora non mi resta che fare un controllo sulla "," e sostituirla con un punto... in php losaprei fare senza molti problemi , ma in javascript mi potresti consigliare un metodo ....
    ?

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    ... il metodo replace ?

    ciao
    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

  5. #5
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    Ti ringrazio , non pensavo ci fosse replace come in php ... ho risolto.
    una cosa ancora e poi dovrei essere a posto, anche se non so se usciro fuori topic spero mi possiate perdonare !

    Codice PHP:
    <script Language="JavaScript" Type="text/javascript">
            function 
    calcolatotale() {
            var 
    conteggio document.invio_formconta.conteggiojs.value;
            var 
    1;
                for (
    <= conteggio i++){
                    var 
    = (document.getElementById("fativa["+i+"]").value);
                    var 
    = (document.getElementById("accr["+i+"]").value);
                    var 
    = (document.getElementById("impnota["+i+"]").value);
                    
                    
    c.replace ("," ".");
                    
    b.replace ("," ".");
                    
    d.replace ("," ".");
                    
                    
    parseFloat(c);
                    
    parseFloat(b);
                    
    parseFloat(d);
                    
                    if (
    == "" || == undefined || isNaN(c)){
                        
    0.00;
                    }
                    if (
    == "" || == undefined || isNaN(d)){
                        
    0.00;
                    }
                    
                    if ( (
    != "" || != undefined) && (!= "" || != undefined) && (!= "" || != undefined) ){
                        var 
    b-(c+d);
                    }else if ( (
    != "" || != undefined) && (== "" || == undefined) && (!= "" || != undefined) ){
                        var 
    b-(c);
                    }else if ( (
    == "" || == undefined) && (== "" || == undefined) && (!= "" || != undefined) ){
                        var 
    b-(d);
                    }else if ( (
    == "" || == undefined) && (== "" || == undefined) && (!= "" || != undefined) ){
                        var 
    b;
                    }else if ( (
    == "" || == undefined) && (== "" || == undefined) && (== "" || == undefined) ){
                        
    String("");
                    }
                    if (
    != "" || != undefined){
                        
    document.invio_formconta.residuo.valueparseFloat(h).toFixed(2).replace('.',',');
                    }else if (
    == undefined || == "" || isNaN(h)){
                        
    document.invio_formconta.residuo.value String("");
                    }
                }
        }



    //-->
    </script> 
    io ho n moduli inserimento importi , questi vengono caricati dinamicamente.
    var b = (document.getElementById("fativa["+i+"]").value);
    var c = (document.getElementById("accr["+i+"]").value);
    var d = (document.getElementById("impnota["+i+"]").value);

    facendo un debug ho visto che va tutto bene , effettua i calcoli e prende i valori uno alla volta...

    ma , l'unica cosa che mi manca e questa :
    codice:
    if (h != "" || h != undefined){
    					document.invio_formconta.residuo.value= parseFloat(h).toFixed(2).replace('.',',');
    				}else if (h == undefined || h == "" || isNaN(h)){
    					document.invio_formconta.residuo.value = String("");
    				}
    non riesco a scrivere nella casellina con indice i... sapete spiegarmi il perchè?
    io inserisco l'indice sull id ma restituisce un errore sempre con il debug...

    grazie ancora, ciao

  6. #6
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    up , nesuno sa dirmi come posso fare in modo che questa linea di codice mi inserisca il risultato nella casella campo di [i]? ho provato in diversi modi ma nada...
    forse è sbagliato qualcosa sopra... ma dubito!

    ciao
    Codice PHP:
    document.invio_formconta.totale.valueparseFloat(h).toFixed(2).replace('.','.'); 

  7. #7
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    up

  8. #8
    definisci esattamente cosa intendi con casella campo di [i]
    poi se ne pu&ograve; parlare.

    Faccio un esempio, in modo che ci si possa capire:
    Se tu volessi scrivere qualcosa nel campo che ha id=fativa[3], allora:

    codice:
    var i=3;
    document.getElementById("fativa["+i+"]").value = "123";
    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  9. #9
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    io ho un campo nellhtml di questo tipo

    <input type="text" name="residuo"<?php echo "[".$i."]"; ?> />

    ovviamente il camcolo dovrà essere posto nel suo value calcolando i valori dei 3 campi sopra che fanno parte sempre dello stesso form[$i];

    i valori di
    Codice PHP:
      var = (document.getElementById("fativa["+i+"]").value);
                    var 
    = (document.getElementById("accr["+i+"]").value);
                    var 
    = (document.getElementById("impnota["+i+"]").value); 
    vengono presi e calcolati correttamente per ogni modulo, ma il debug di firefox mi estituisce errore proprio in questa linea ... e non ho capito il problema

    Codice PHP:
    document.invio_formconta.residuo.valueparseFloat(h).toFixed(2).replace('.',','); 
    ma il getElementById non serve a recuperare il valore del campo in question?
    a me serve riuscire a scrivere il risultato nel campo residuo...

  10. #10
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    up

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.