Donc, j’ai mon script jQuery prêt, mais j’ai un problème, si une valeur est: 10 $, alors tout va bien, mais si une valeur est: $24,99
il ne montrera que 24
au lieu de 24,99
.
Comment puis-je réparer cela? c’est ma source:
http://jsfiddle.net/0L2n8wdt/34/
Product Product Price How much you want? Total Price Fruit: $ 10 Drinks: $ 22,95 Cards: $ 5 Total price of all:
$("input").on("keyup", function () { var $input = $(this); var howMany = parseInt($input.val()); var unitAmount = parseInt($input.parent().prev().text().replace("$", "")); var total = howMany ? howMany * unitAmount : 0; $input.parent().next().text("€ " + total); var total = 0; $("tbody tr td:last-child").each(function () { total += parseInt($(this).text().replace("€", "") || 0); }); $("#total").html("€ " + total); });
vous devez changer le séparateur décimal en dot et parseInt
en parseFloat
var unitAmount = parseFloat($input.parent().prev().text().replace("$", "").replace(",","."))
Et après les opérations arithmétiques, vous devez reconvertir votre numéro en chaîne et remplacer le point par:
$input.parent().next().text("€ " + (""+total).replace(".",","));
Pour prix tatal:
var total = 0; $("tbody tr td:last-child").each(function() { total += parseFloat($(this).text().replace("€","").replace(",",".") || 0); }); $("#total").html( (""+total).replace(".",","));
La démo complète est ici
C’est parce que vous avez utilisé parseInt
, utilisez parseFloat
.
Deuxièmement, la valeur 22,95
devrait être 22.95
.
var unitAmount = parseFloat($input.parent().prev().text().replace("$", "")); total += parseFloat($(this).text().replace("€","") || 0);
Voir la DEMO mise à jour.
$input.parent().next().text(total > 0 ? ("€ "+total).replace(".",",") : "");
Cela devrait fonctionner et vous verrez au lieu de.
Puisque vous utilisez parseInt, utilisez plutôt parseFloat