0

如果购物车中有多个 SKU,我会抛出错误消息,但我需要对我的规则设置一个例外。下面是我的代码。

基本上这里发生的情况是,JNL758 是唯一可以与来自customizedProductIDs 和customizedProductIDs2 的任何SKU 一起放入购物车的SKU。

如果来自customizedProductIDs 或customizedProductIDs2 的1 个SKU 与JNL758 一起在购物车中,我需要一些不会显示错误消息的规则,但那就是这样 - 用户在购物车中不能有额外的SKU。

假设@JNL0500、JNL758 和 JNL123 在购物车中 - 我需要显示错误消息。如果购物车中只有 @JNL0500 和 JNL758,则不会显示错误消息。

var customizedProductIDs = ["@JNL0500", "@JNL0501", "@JNL0502", "@JNL0503", "@JNL0504"];
var customizedProductIDs2 = ["@JNL0408", "@JNL1036", "@JNL1735", "JNL1005", "@JNL0222", "@JNL0221"];
var cardsku = ["JNL758"];

function cartItemCountError() {
  if ($451 && $451.OrderDetails && $451.OrderDetails.lineItems) {
      var cartItemCount = $451.OrderDetails.lineItems.length;
      var errors = false;
      if (cartItemCount > 1) {
          for (var i = 0; i < cartItemCount; i++) {
              var currItem = $451.OrderDetails.lineItems[i];
              // If cart has a customized item in it (See customizedProductIDs array.), it may not have any other item in the cart.)
              if ($.inArray(currItem.productID, customizedProductIDs) != -1) {
                  errors = true;
              }
              else if ($.inArray(currItem.productID, customizedProductIDs2) != -1) {
                  errors = true;
              }
              if ($.inArray(currItem.productID, customizedProductIDs2) && ($.inArray(currItem.productID, cardsku)) != -1) {
                  errors = false;
              }

          }
      }
      return errors;
  }
}
4

2 回答 2

0

我认为您处理此问题的最直接方法可能是从您要测试的值数组中删除 cardku 的“异常”项,如此处所示然后像往常一样继续测试您的规则。

于 2012-08-31T00:57:50.817 回答
0

cardSKU 的存在改变了您需要检查的阈值,该阈值定义了购物车是否有效。

一些伪代码以显示更简单的形式

var isCardSKU = Cart Contains cardsku 
var isCustomSKU = Cart Contains customizedProductIDs || Cart Contains customizedProductIDs2 

if (isCustomSKU && (isCardSKU && Cart.length > 2) || (!isCardSKU && Cart.length > 1)
{
  // Error here
}
于 2012-08-31T00:58:06.873 回答