Domanda

 var total = 0;
        $(".amount").each(function() {
            var value = $(this).val();
            value = (value.length < 1) ? 0 : value;
            var tmp = parseFloat(value).toFixed(2);
            total += tmp;
        });
        $(".total").text(total);

Sto cercando di scorrere alcune caselle di testo e riassumere i loro valori. Questo produce una brutta stringa. Cosa mi sto perdendo ?? se inserisco 8 nella prima casella di testo, il testo totale finisce come " 08.000.000.000.00 " ;. Che cosa sto facendo di sbagliato? Vorrei formattare come valuta, ma in caso contrario, almeno solo un numero decimale. Qualche puntatore?

Grazie, ~ ck a San Diego

È stato utile?

Soluzione

.toFixed converte l'oggetto da un numero in una stringa.

Lascia i valori completi in posizione e converti solo usando .toFixed alla fine

$(".total").text(total.toFixed(2));

In alternativa, riconvertire la stringa in un numero.

total = total + + tmp;

Altri suggerimenti

Solo per la FYI, esiste un eccellente plug-in di aggregazione matematica per jQuery: Calcolo jQuery

L'uso di quel plug-in può anche risolvere indirettamente il tuo problema.

Il suo utilizzo ridurrebbe il tuo script a:

$('.total').text($('.amount').sum());

Stai convertendo il parseFloat in una stringa, quindi lo aggiungi al totale. Aggiungi .toFixed (2) alla riga finale, una volta che le cose sono state aggiunte.

var total = 0;
$(".amount").each(function() {
    var value = $(this).val();
    value = (value.length < 1) ? 0 : value;
    var tmp = parseFloat(value);
    total += tmp;
});
$(".total").text(total).toFixed(2);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top