2016-06-14 2 views
1

Der folgende Code gibt die Summe der aktivierten Kästchen an und zeigt das Ergebnis an.jQuery-Dezimalstellen nicht in Ergebnissumme der aktivierten Kästchen

Ich habe diesen Code von this Frage in Stackoverflow.

HTML

<input type="checkbox" checked value="Gez" rel="69.95">Gezichtsbehandeling 
<input type="checkbox" value="ExtraLang" rel="9.95">Extra lange 
<input type="checkbox" value="Massage" rel="59.95">Massage 
<input type="checkbox" value="Pedicure" rel="35">Pedicure 

Totaal <span id="output"></span> 

JS

<script> 
$(document).ready(function() { 
    function recalculate() { 
     var sum = 0; 

     $("input[type=checkbox]:checked").each(function() { 
      sum += parseInt($(this).attr("rel")); 
      ; 
     }); 

     $("#output").html(sum); 
    } 

    $("input[type=checkbox]").change(function() { 
     recalculate(); 
    }); 
}); 

</script> 

Problem ist, dass die Summe nicht Dezimalstellen nicht zeigen.

Siehe hier jsfidle

Antwort

3

Per Ihre JSFiddle:

$("input[type=checkbox]:checked").each(function() { 
     sum += parseFloat($(this).attr("rel")); 
    }); 

Änderung der parseInt-parseFloat den Dezimalpunkt zu halten.

Arbeiten JSFiddle

UPDATE:

pro Ihre Anfrage die Ausgabe auf 2 Dezimalstellen formatiert werden zu lassen .. Sie

$("#output").html(sum); 

Um ändern müssen:

$("#output").html(sum.toFixed(2)); 

Das sollte dir das gewünschte Format geben.

Arbeiten JSFiddle

+0

ahh du bist 15 Sekunden früher. +1 an Sie :) –

+1

@ Sk.Tajbir haha ​​danke. Großartige Köpfe denken gleich :) –

+0

@Richard Gern geschehen. Froh, dass ich helfen konnte! –

2

Offensichtlich dies geschieht, weil parseInt den Dezimalteil wird Strippen. Konvertiere es in eine beliebige Zahl, nicht speziell int.

sum += +$(this).attr("rel"); 
+0

Ihr Ansatz ist prolly besser und einfacher, wenn Sie beginnen. Aber im Code, den ich hatte, war es einfach, parseInt in parseFloat zu ändern. Ich hoffe, das beantwortet deinen Kommentar. – Richard

2

Try this:

$("input[type=checkbox]:checked").each(function() { 
    sum += parseFloat($(this).attr("rel")); 
}); 

zu parseFloat ersetzen ParseInt. Hier ist jsFiddle: http://jsfiddle.net/efvxefx1/2/

Danke.

+0

Danke funktioniert das auch gut, zu schlecht waren Sie ein wenig langsamer, Danke trotzdem für die Mühe. +1 – Richard

0

Es ist, weil Sie es in Int vor der Summe konvertieren. Bitte aktualisieren Sie Ihren Code unter 1 -

sum += parseFloat($(this).attr("rel")); 
2

erhalten Summe zwei Dezimalstellen auch!

$("input[type=checkbox]:checked").each(function() { 
      sum += parseFloat($(this).attr("rel")); 
     }); 
    sum = sum.toFixed(2) 
    $("#output").html(sum); 
+0

Danke, die festen Dezimalzahlen waren etwas anderes, was ich wissen musste. Es funktioniert perfekt – Richard

+0

Upvote zum Formatieren der 'Summe' auf 2 Dezimalstellen :) –

Verwandte Themen