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

    Eliminare formattazione importo

    Ho il seguente codice che calcola il totale del valori di una serie di checkbox e di un valore recuperato con var total = parseInt(document.getElementById('TariffaNotti').i nnerHTML);
    Se questo ultimo valore non è formattato con il puntino per le migliaia funziona tutto bene, altrimenti il tutto va in errore. Mi sapete spiegare come posso levare questo puntino?
    Grazie infinite!!

    codice HTML:
    <!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=iso-8859-1" />
    <title>Documento senza titolo</title>
    
    </head>
    
    <body>
    <p>Tariffa per <b>1 notti</b>: <b><span id="TariffaNotti">2.000,00</span> euro</b>.</p>
    <input type="checkbox" name="uno" value="30" onClick="test(this);" /> Extra n.1, euro 30,00<br />
    <input type="checkbox" name="due" value="50" onClick="test(this);" /> Extra n.2, euro 50,00<br />
    <input type="checkbox" name="tre" value="190" onClick="test(this);" /> Extra n.3, euro 190,00<br />
    <b>Importo totale : <span id="Totalcost">2.000,00</span></b></p>
    </body>
    
    <script type="text/javascript">
    function formatMoney(number, places, symbol, thousand, decimal) {
        number = number || 0;
        places = !isNaN(places = Math.abs(places)) ? places : 2;
        symbol = symbol !== undefined ? symbol : "$";
        thousand = thousand || ",";
        decimal = decimal || ".";
        var negative = number < 0 ? "-" : "",
            i = parseInt(number = Math.abs(+number || 0).toFixed(places), 10) + "",
            j = (j = i.length) > 3 ? j % 3 : 0;
        return symbol + negative + (j ? i.substr(0, j) + thousand : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousand) + (places ? decimal + Math.abs(number - i).toFixed(places).slice(2) : "");
    }
    
    
    var total = parseInt(document.getElementById('TariffaNotti').innerHTML);
    
    
    function test(item){
        if(item.checked){
           total+= parseInt(item.value);
        }else{
           total-= parseInt(item.value);
        }
        totale = formatMoney(total,2, "", ".", ","); 
        //alert(total);
        document.getElementById('Totalcost').innerHTML = totale;
    }
    </script>
    </html>
    

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, i casi potrebbero essere di versi, ad ogni modo se ci fosse il puntino non sarebbe un intero ma di tipo float e quindi dovresti usare parseFloat(). Eliminando in puntino dovresti essere certo che sia il separatore delle migliaia e non decimali o vice versa.
    Es.: 10.000 potrebbe essere 10000(mila) o 10,000 se testualmente fosse stata usata la virgola.
    Oppure 10.000,44.
    Se sei certo dello scopo del carattere pero', puoi tranquillamente eliminare o rimpiazzare il puntino.
    Dovresti fare un replace del puntino e poi fare il resto.

  3. #3
    Quote Originariamente inviata da m4rko80 Visualizza il messaggio
    Ciao, i casi potrebbero essere di versi, ad ogni modo se ci fosse il puntino non sarebbe un intero ma di tipo float e quindi dovresti usare parseFloat(). Eliminando in puntino dovresti essere certo che sia il separatore delle migliaia e non decimali o vice versa.
    Es.: 10.000 potrebbe essere 10000(mila) o 10,000 se testualmente fosse stata usata la virgola.
    Oppure 10.000,44.
    Se sei certo dello scopo del carattere pero', puoi tranquillamente eliminare o rimpiazzare il puntino.
    Dovresti fare un replace del puntino e poi fare il resto.
    Ho aggiunto questo codice, ma il problema non si è risolto.

    codice HTML:
    total = total.replace(".","");
    total = total.replace(",","");
    total = parseFloat(total);

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    codice:
    var total = "2.000,00"; //stringa presa dall'html
    total = total.replace('.',''); //replace su stringa
    alert(parseInt(total)); //ritorna 2000
    occhio che se rimpiazzi la virgola dei decimali con nulla il 2000 poi diventa 200000
    parseFloat()

  5. #5
    Quote Originariamente inviata da m4rko80 Visualizza il messaggio
    codice:
    var total = "2.000,00"; //stringa presa dall'html
    total = total.replace('.',''); //replace su stringa
    alert(parseInt(total)); //ritorna 2000
    occhio che se rimpiazzi la virgola dei decimali con nulla il 2000 poi diventa 200000
    parseFloat()
    Sei stato gentilissimo, grazie mille.
    Riporto il codice completo funzionante, nel caso interessasse anche a qualcun altro.

    codice HTML:
    <!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=iso-8859-1" />
    <title>Documento senza titolo</title>
    <script type="text/javascript">
    function formatMoney(number, places, symbol, thousand, decimal) {
        number = number || 0;
        places = !isNaN(places = Math.abs(places)) ? places : 2;
        symbol = symbol !== undefined ? symbol : "$";
        thousand = thousand || ",";
        decimal = decimal || ".";
        var negative = number < 0 ? "-" : "",
            i = parseInt(number = Math.abs(+number || 0).toFixed(places), 10) + "",
            j = (j = i.length) > 3 ? j % 3 : 0;
        return symbol + negative + (j ? i.substr(0, j) + thousand : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousand) + (places ? decimal + Math.abs(number - i).toFixed(places).slice(2) : "");
    }
    
    var total = document.getElementById('TariffaNotti').innerHTML;
    
    
    function test(item){
        total = total.replace('.','');
        total = parseInt(total);
    
        if(item.checked){
           total+= parseInt(item.value);
        }else{
           total-= parseInt(item.value);
        }
        //alert(total);
        total = formatMoney(total,2, "", ".", ","); 
        document.getElementById('Totalcost').innerHTML = total;
    }
    </script>
    </head>
    
    <body>
    <p>Tariffa per <b>1 notti</b>: <b><span id="TariffaNotti">2.000,00</span> euro</b>.</p>
    <input type="checkbox" name="uno" value="30" onClick="test(this);" /> Extra n.1, euro 30,00<br />
    <input type="checkbox" name="due" value="50" onClick="test(this);" /> Extra n.2, euro 50,00<br />
    <input type="checkbox" name="tre" value="190" onClick="test(this);" /> Extra n.3, euro 190,00<br />
    <b>Importo totale : <span id="Totalcost">2.000,00</span></b></p>
    </body>
    
    
    </html>
    

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.