我必须稍微修改一下 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);
});
});
价格以欧元为单位,因此它会将其转换为正确的十进制值并返回。
希望它很清楚,有人可以提供帮助!
干杯!