Мне нужно немного изменить систему магазина opencart, чтобы цена продукта обновлялась автоматически, поэтому я нашел скрипт, который я немного изменил, но прямо сейчас столкнулся с проблемой.
Первоначальная цена, полученная из div, обновляется значениями выбранного радио или опции выбора. Но когда у меня есть более одной опции в продукте (множественный выбор или радио), цена не обновляется соответствующим образом: всегда извлекается исходная цена (как из сценария), а при изменении другой опции она не обновляется с обновленной ценой до . Кроме того: когда вы выбираете одну опцию, затем другую и снова меняете первую опцию, это снова ничего не меняет.
Jquery-скрипт:
$(document).ready(function() {
$('.option').change(function() {
var OriginalPrice = $('#thisIsOriginal').text();
OriginalPrice = OriginalPrice.replace( /,/,"." );
var OriginalCurrency = OriginalPrice.substring(OriginalPrice.length - 1, OriginalPrice.length);
OriginalPrice = OriginalPrice.substring(0,OriginalPrice.length - 1);
if($('.option :checked').val()) {
var newPriceValue = $('.option :checked').attr("id");
newPriceValue = $("label[for='" + newPriceValue + "']").text();
}
if($('.option :selected').val()) {
var newPriceValue = $('.option :selected').text();
}
newPriceValue = newPriceValue.replace( /,/,"." );
var position1 = newPriceValue.indexOf("(");
var position2 = newPriceValue.indexOf(")");
position1 = position1+2;
var finalPriceValue = newPriceValue.substring(position1, position2);
if(newPriceValue.indexOf('.') == -1)
{
finalPriceValue = "0";
}
else
{
finalPriceValue = finalPriceValue.substring(0,finalPriceValue.length - 1);
}
console.log(finalPriceValue);
finalPriceValue = parseFloat(finalPriceValue) + parseFloat(OriginalPrice);
finalPriceValue = finalPriceValue.toFixed(2);
finalPriceValue = finalPriceValue.replace( ".","," );
$('#priceUpdate').text(finalPriceValue + OriginalCurrency);
});
});
Цена указана в евро, поэтому он конвертирует ее в правильное десятичное значение и обратно.
Надеюсь, что это ясно, и кто-то может помочь!
Ваше здоровье!