jПросьба изменить отображаемую цену в зависимости от установленного флажка или переключателя. - PullRequest
0 голосов
/ 06 июля 2018

На моем сайте WooCommerce посетители могут добавлять дополнения к продукту за дополнительную плату.

Я пытаюсь обновить отображаемую цену на странице продукта в зависимости от выбранного дополнения.

Я заставил его работать частично, но теперь я застрял ... В моем коде вычисления работают, но я тоже не знаю, как делать вычисления с использованием десятичных дробей. (например: 1,500,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">

В результате цена будет обновлена ​​с «€ 1500,00» до «150050». Вместо ожидаемого 1550.

Другое дело ... как я могу отформатировать число, чтобы иметь десятичные дроби и знак евро снова впереди? Мой основной код выведет «1550», если он будет работать, но я бы предпочел, чтобы он был «€ 1,550,00».

Надеюсь, кто-то может войти;)

1 Ответ

0 голосов
/ 06 июля 2018

Вы добавляете string с вместе вместо float с. Значения, возвращаемые jQuery, представляют собой string s ( jQuery 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...