jQuery根据选定的复选框/单选按钮更改显示的价格

时间:2018-07-06 14:03:37

标签: jquery html wordpress localization internationalization

在我的WooCommerce网站上,访问者可以将附加组件添加到价格昂贵的产品中。

我正在尝试根据所选的添加项来更新产品页面上显示的价格。

我可以使其部分工作,但是现在我陷入了困境...在我的代码中,计算有效,但我也不知道如何使用小数进行计算。 (例如:1.550,50 + 50 = 1.550,50)

jQuery(document).ready(function ($) {
var prijs = $('.price .amount').text().replace('€', '').replace(',', '');
$('.product-addon input').change(function(){
var x = $(this).closest('input:checked').value;
var total = prijs + x;
$('.price .amount').text(total);
});
});

这是html查找价格字段和单选按钮的方式:

<p class="price"><span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">€</span>1,500.00</span></p>


<input type="radio" class="addon addon-radio" name="addon-401-kleur-0[]" data-raw-price="50" data-price="50" value="rood">

价格从“€1,500.00”更新为“ 150050”。而不是预期的1550。

另一件事..如何将数字格式化为小数点和欧元符号再次在前面?如果可以,我的基本代码将输出“ 1550”,但我希望将其输出为“€1.550,00”。

希望有人可以鸣叫;)

1 个答案:

答案 0 :(得分:0)

您正在将string而不是float一起添加。 jQuery返回的值是stringjQuery text() method),因此被串联起来而不是作为数字加在一起。

看看parseFloat

尝试执行以下操作:
var prijs = parseFloat(...)

var x = parseFloat(...)

然后在您的var total = prijs + x中,将两个数字相加,这就是您想要的。

关于格式化数字的方法,请查看toLocaleString

例如:

(1550).toLocaleString('en-GB', {style: 'currency', currency: 'GBP', minimumFractionDigits: 2}).replace('£', '€');


给出:

€1,550.00