javascript - Woocommerce 使用添加到购物车按钮添加多个选定的产品
问题描述
我在将多个产品/数量添加到购物车时遇到了一些问题。网址如下: stg-rogue.amplab.com
产品示例代码,这是选择时产品的示例之一:
<div class="card">
<?php
$product_DI = 77; //Product ID
$pro = new WC_Product($product_DI);
echo '<img class="card-img-top cart-prod-img flavor-patis patis-inactive" src="http://doughnutwoo.com/wp-content/uploads/2020/08/doughnut-1.png"/>';
echo '<div class="card-body">';
echo '<p class="card-title">'.$pro->get_title();'</p>';
echo '<p class="card-text" id="patis-price">Php '.$pro->get_price();'';
echo '</p>';
echo '<input type="number" value="0" min="0" max="100" step="1" class="qty-patis" name="flavor-qty" disabled>';
echo '<input type="text" value="" class="patis-hidden-url" >';
echo '<input type="text" value="" class="patis-hidden-id" >';
?>
</div>
</div>
按钮,这连接到所有上面和下面的js:
<div class="row justify-content-center" style="margin-bottom: 20px;">
<div class="col-md-6">
<button type="button" id="AddToCartBtn" class="btn btn-warning btn-block" disabled><i class="fas fa-shopping-cart" id="AddToCart-Icon" style="padding-right: 10px;"></i><span id="AddToCart-Span">ADD TO CART</span></button>
</div>
<div class="col-md-6">
<button type="button" id="BuyNowBtn" class="btn btn-warning btn-block" disabled><span id="BuyNow-Span">BUY NOW</span></button>
</div>
</div>
我添加的 Javascript 是创建一个数组,创建 3 盒或 6 盒,以显示我添加的风味注释:
jQuery('#AddToCartBtn').click(function(){
var el = document.getElementById("AddToCartBtn");
var spanElem = document.getElementById("AddToCart-Span");
var check_el = document.getElementById("AddToCart-Icon");
//Disables button and change span element text, gives visual feedback to the user
el.disabled = true;
spanElem.innerHTML = "ADDING...";
var totalQty = findTotalQty();
var dealID = 0;
var dealQty = 0;
if(jQuery('.box-of-3-active').length > 0)
{
dealID = 125;
dealQty = jQuery('.input-boxof-3').val();
}
else if(jQuery('.box-of-6-active').length > 0)
{
dealID = 126;
dealQty = jQuery('.input-boxof-6').val();
}
var maxFlavors = calculateMaxFlavorsAllowed(dealID, dealQty);
var currentTotalFlavorQty = findTotalQty();
//Wait for some seconds to pass to change some attributes of the button, then set the attributes back to their initial values.
//This is again purely just for visual feedback, when a customer clicks the add to cart button.
if(currentTotalFlavorQty > maxFlavors)
{
setTimeout(function(){
check_el.setAttribute('class', "fas fa-times");
spanElem.innerHTML = "ERROR";
el.setAttribute('class', "btn btn-danger btn-block"); }, 1500);
setTimeout(function(){
el.disabled = false;
check_el.setAttribute('class', "fas fa-shopping-cart");
spanElem.innerHTML = "ADD TO CART"; el.setAttribute('class', "btn btn-warning btn-block"); }, 2500);
alert('You cannot add any more flavors! Please Try Again.');
}
else if(currentTotalFlavorQty <= 0 || currentTotalFlavorQty < maxFlavors)
{
setTimeout(function(){
check_el.setAttribute('class', "fas fa-times");
spanElem.innerHTML = "ERROR";
el.setAttribute('class', "btn btn-danger btn-block"); }, 1500);
setTimeout(function(){
el.disabled = false;
check_el.setAttribute('class', "fas fa-shopping-cart");
spanElem.innerHTML = "ADD TO CART"; el.setAttribute('class', "btn btn-warning btn-block"); }, 2500);
alert('Please check the quantity for the flavors you have selected and try again.');
}
else if(currentTotalFlavorQty === maxFlavors)
{
addToCart();
}
});
function addToCart()
{
var el = document.getElementById("AddToCartBtn");
var spanElem = document.getElementById("AddToCart-Span");
var check_el = document.getElementById("AddToCart-Icon");
setTimeout(function(){
check_el.setAttribute('class', "fas fa-check");
spanElem.innerHTML = "SUCCESSFULLY ADDED!";
el.setAttribute('class', "btn btn-success btn-block"); }, 1500);
setTimeout(function(){
check_el.setAttribute('class', "fas fa-shopping-cart");
spanElem.innerHTML = "ADD TO CART"; el.setAttribute('class', "btn btn-warning btn-block");}, 2500);
var test_wew = constructOrders();
var boxDealQty = 0;
var chosenBoxDeal = 0;
if(jQuery('.box-of-3-active').length > 0)
{
chosenBoxDeal = 125;
boxDealQty = jQuery('.input-boxof-3').val();
}
else if(jQuery('.box-of-6-active').length > 0)
{
chosenBoxDeal = 126;
boxDealQty = jQuery('.input-boxof-6').val();
}
console.log(test_wew);
jQuery.ajax({
type: 'post',
url: 'index.php',
data: {
'SelectedFlavors': test_wew,
'testqty' : boxDealQty,
'chosenboxdeal' : chosenBoxDeal
},
success: function () {
console.log("Added To Cart");
},
error: function () {
alert("error");
}
});
resetFieldsAll();
isActivePatis = false;
isActiveCotabato = false;
isActiveCalamansi = false;
isActiveLemonMeringue = false;
isActiveUbeCheese= false;
isActiveHazelButternut = false;
}
如果我可以使用添加到购物车按钮一次添加多个具有数量的产品,希望您能帮助我。提前谢谢
解决方案
推荐阅读
- javascript - 删除除单词和单词之间的空格以外的所有内容
- python - 在 pyplot 中使用 fill_between() 绘图
- javascript - 错误:解析模块“react-native/Libraries/Renderer/shims/ReactNativeComponentTree”时
- javascript - 使用 array.map() 或 array.reduce() 创建图表数组
- javascript - 500 内部服务器错误/ js 到控制器
- angular - Angular Redux @select() obs,然后我可以在我的控制器中订阅它吗?模式仍然会取消订阅我 onDestroy 吗?
- python - 在python中读取没有注释的文件
- jenkins - 在外部文件上定义 Jenkins 管道
- c# - 多线程循环在 IIS 上不起作用
- django - python,django,wsgi应用程序不工作