【发布时间】:2017-03-22 00:01:06
【问题描述】:
我无法提出以下逻辑。我有两个复选框,每个复选框中有两个数据价格值。一个是solo-price,如果只选中一个复选框,我想使用它。然后我有一个combined-price,如果两个复选框都被选中,我想使用它......想想捆绑定价。
我有两个问题,都与组合定价有关。
-当两个复选框都被选中时,我无法弄清楚如何使用组合定价显示在 package1-review-price 或 package2-price-review div 中。基本上重写了以下变量。
var package1Price = [];
var package2Price = [];
-那么我的第二个问题与上述问题直接相关。当两个复选框都被选中时,总数为solo-price 和combination-price 的总和。它显示总额为 46 美元,而实际应该是 21 美元。
在calcTotalPrice 函数中,我尝试像这样嵌套所有命令……但没有帮助。
if ($('#package2').not(':checked') && $('#package1').is(':checked')) {
$('#package1:checked').each(function() {
totalPrice += parseInt($(this).data('solo-price'));
});
}
有人看出我的逻辑有什么问题吗?
var package1Price = [];
var package2Price = [];
$('.product-check').on('change', function() {
if ($('#package1').is(':checked') && $('#package2').is(':checked')) {
$('#packages-selected').toggle(100).html('Both packages selected');
}
if ($('#package2').not(':checked') && $('#package1').is(':checked')) {
//Package 1 single Price
var str = $('#package1:checked').map(function() {
return "$" + $(this).data('solo-price');
}).toArray().join(" ");
$('#product1-price-review').toggle().html(str);
calcTotalPrice();
//$('#packages-selected').toggle(100).html('Package 1 Selected');
}
else if ($('#package1').not(':checked')) {
$('#product1-price-review').toggle();
package1Price = 0;
}
if ($('#package1').not(':checked') && $('#package2').is(':checked')) {
var str = $('#package2:checked').map(function() {
return "$" + $(this).data('solo-price');
}).toArray().join(" ");
$('#product2-price-review').html(str);
$('#product1-price-review').hide();
calcTotalPrice();
// $('#packages-selected').toggle(100).html('Package 2 Selected');
}
else if ($('#package2').not(':checked')) {
$('#product2-price-review').hide();
package2Price = 0;
}
});
function calcTotalPrice() {
var totalPrice = 0;
var tpPrice = 0;
$('#package1:checked').each(function() {
totalPrice += parseInt($(this).data('solo-price'));
});
$('#package2:checked').each(function() {
tpPrice += parseInt($(this).data('solo-price'));
});
if ($('#package1').is(':checked') && $('#package2').is(':checked')) {
$('#package1:checked,#package2:checked').each(function() {
tpPrice += parseInt($(this).data('combined-price'));
});
}
$('#package-review-total').html("Total $ " + (totalPrice + tpPrice));
}
#packages-selected, #product1-price-review, #product2-price-review {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" class="product-check" id="package1" value="Product 1" data-solo-price="10" data-combined-price="8">
<input type="checkbox" class="product-check" id="package2" value="Product 2" data-solo-price="15" data-combined-price="13">
<p id="product1-price-review"></p>
<p id="product2-price-review"></p>
<p id="package-review-total"></p>
<p id="packages-selected"></p>
【问题讨论】:
标签: javascript jquery function checkbox input