Доброго, друзья.
Сделал я такого монстра:
function productCalc(a, b, c, d, e, f, g, h, i, j, k, l, m, n) {
$("#lumbersCartForm input").on("ifChanged change", function(event) {
if ($(a + " .Wet").is(':checked')) {
if ($(a + " .Retail").is(':checked')) {
if ($(a + " .IsMeter").is(':checked')) {
var itemPrice = b;
} else if ($(a + " .IsPcs").is(':checked')) {
itemPrice = c;
}
var itemTotal = itemPrice * d.val();
$(a + " .price span").text(itemTotal);
$(a + " .price input[type='hidden']").val(itemTotal);
} else if ($(a + " .Wholesale").is(':checked')) {
if ($(a + " .IsMeter").is(':checked')) {
itemPrice = e;
} else if ($(a + " .IsPcs").is(':checked')) {
itemPrice = f;
}
itemTotal = itemPrice * d.val();
$(a + " .price span").text(itemTotal);
$(a + " .price input[type='hidden']").val(itemTotal);
};
$("#cart tbody ." + g + " .humidity").html('Option 1 - Value 1');
};
if ($(a + " .Dry").is(':checked')) {
if ($(a + " .Retail").is(':checked')) {
if ($(a + " .IsMeter").is(':checked')) {
itemPrice = h;
} else if ($(a + " .IsPcs").is(':checked')) {
itemPrice = i;
};
itemTotal = itemPrice * d.val();
$(a + " .price span").text(itemTotal);
$(a + " .price input[type='hidden']").val(itemTotal);
} else if ($(a + " .Wholesale").is(':checked')) {
if ($(a + " .IsMeter").is(':checked')) {
itemPrice = j;
} else if ($(a + " .IsPcs").is(':checked')) {
itemPrice = k;
}
itemTotal = itemPrice * d.val();
$(a + " .price span").text(itemTotal);
$(a + " .price input[type='hidden']").val(itemTotal);
};
$("#cart tbody ." + g + " .humidity").html('Option 1 - Value 2');
};
if ($(a + " .IsMeter").is(':checked')) {
var itemQtyType = "Option 3 - Value 1",
itemVolTotal = parseFloat(d.val(), 10);
} else {
itemVolTotal = parseFloat((l * d.val()).toFixed(2), 10);
itemQtyType = "Option 3 - Value 2";
};
if (!$(a + " .Add").is(":checked")) {
itemTotal = 0;
itemVolTotal = 0;
};
if ($(a + ' .Add').is(':checked')) {
if (!$("#cart tbody ." + g).length) {
$("#cart tbody #profiledBeams").after(' <tr class="' + g + '">\
<td>' + m + '</td>\
<td class="humidity">' + n + '</td>\
<td class="qty">' + d.val() + itemQtyType + '</td>\
<td class="price">' + $(a + " .price input[type='hidden']").val() + '</td>\
</tr> ');
};
} else {
$('.' + g).remove();
$(a + " .price input[type='hidden']").val(0);
};
$("#cart tbody ." + g + " .qty").html(d.val() + itemQtyType);
$("#cart tbody ." + g + " .price").html($(a + " .price input[type='hidden']").val());
});
function addToCart() {
$(a + " .btnAdd").on('click', function() {
if ($(this).hasClass('added')) {
$(a + " .Add").prop("checked", false).change();
$(this).toggleClass('added btn-danger').text('Add to cart');
$(this).parent().siblings('.price').find('input').val(0);
} else {
$(a + " .Add").prop("checked", true).change();
$(this).toggleClass('added btn-danger').text('Remove');
};
});
};
addToCart();
};
Передаю в нее товары:
// Product 1
var itemSelector = '#item', // a
qtySelector = $('input[name="itemQty"]'), // d
cartItemSelector = 'cartItem', // g
itemTitle = $("input[name='itemAdd']").val(), // m
itemHumidity = $(itemSelector + " input[name='itemHumidity']").val(), // n
price1 = 8500, // b
price2 = 765, // c
price3 = 8300, // e
price4 = 747, // f
price5 = 10500, // h
price6 = 945, // i
price7 = 10000, // j
price8 = 900, // k
pcsInMeter = 0.09; // l
productCalc(itemSelector, price1, price2, qtySelector, price3, price4, cartItemSelector, price5, price6, price6, price8, pcsInMeter, itemTitle, itemHumidity);
// Product 2
var itemSelector = '#item2', // a
qtySelector = $('input[name="item2Qty"]'), // d
cartItemSelector = 'cartItem2', // g
itemTitle = $("input[name='item2Add']").val(), // m
itemHumidity = $(itemSelector + " input[name='item2Humidity']").val(), // n
price1 = 8500, // b
price2 = 1148, // c
price3 = 8300, // e
price4 = 1121, // f
price5 = 10500, // h
price6 = 1418, // i
price7 = 10000, // j
price8 = 1350, // k
pcsInMeter = 0.135; // l
productCalc(itemSelector, price1, price2, qtySelector, price3, price4, cartItemSelector, price5, price6, price6, price8, pcsInMeter, itemTitle, itemHumidity);
И все работает, не смотря ни на что
Не могу только понять, каким образом вытащить данные о цене товара после всех калькуляций. Внутри функции это переменная
, а как ее поймать извне? И вопрос номер 2: как это реализовать, чтобы посчитать сумму добавленных в корзину товаров?
Фиддл для наглядности
https://jsfiddle.net/r5pu6csk/3/
Пардон, не нашел тут спойлера.