1

我正在建立一个电子商店,我需要能够将小批量添加到购物车中。

管理员会为每个产品设置一个分母(例如 8 表示最小购买量是一箱的 1/8)

我目前使用jQuery 滑块并在其中显示数量,asp:Label这在产品页面上工作得很好,但是在购物车中有多个滑块时它会失控(我需要允许客户调整购物车中的数量)。

我真的很想远离丑陋的下拉列表。

有任何想法吗?

编辑:

固定分母是不可能的... 4/8 必须显示为 1/2 ...

编辑2:

可用性也很重要,当客户想要从 1/16 箱增加到 3 箱时,每次点击 + 1/分母增量不会很好

编辑3:

@RichB:为一小部分案例添加 SKU 可以追溯到固定分母问题。如果我为 1/16 的箱子添加 SKU,而用户想要 1/2 的箱子,他们将不得不订购 8x1/16 的 [不酷]。如果您想为每个可能的部分添加一个 SKU(本例中为 15 个 SKU - 这将使我的产品页面和 CART 方式变得混乱。

4

6 回答 6

0

一种方法是让您的数量文本框后跟一个“/ [分母]”字符串,这将允许他们说出类似 [4] / 8 的内容来指定半个案例 8。

你唯一的问题是你将有一个简单的方法来跟踪这些分母是什么。

于 2009-03-11T18:27:26.180 回答
0

另一种可能的解决方案(因为您反对使用固定分母),是使用一系列向上/向下箭头/按钮/任何东西,您可以使用向上和向下来增加或减少产品的数量(并且在每个增量/减量正确更新标签中的小数值)。

编辑:这可以通过添加一个单独的增量/减量按钮来进一步细化,以按整个案例而不是单个小数修改数量。

于 2009-03-11T18:41:32.980 回答
0

我将有一个字段,可以将其编辑为3 6/4. 但是,当字段失去焦点时,这将转换为最简单的混合分数(4 1/2例如)。

这允许输入的灵活性以及良好的数字格式。

于 2009-03-11T19:00:16.553 回答
0

更新:OP 说“这正是我现在正在使用的,但是当我进入 CART [并且在购物车中有 10 件商品] 时,管理多个滑块变得有问题。这就是我正在寻找替代解决方案的原因”

会像以下工作吗?

看到它在这里工作。(在这里编辑)

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<link rel="stylesheet" href="http://jquery-ui.googlecode.com/svn/tags/1.7/themes/base/ui.all.css" type="text/css" /> 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7/jquery-ui.min.js"></script> 

<div class="demo"> 
    <p> 
        <label for="amount">amount :</label> 
        <input type="text" id="amount" /> 
    </p>     
 <div id="slider"></div> 
</div>

var maxDenominator = 16;
var maxWholeCases = 50;

function toFraction(sliderValue){
  var amount = sliderValue / maxDenominator;

  var whole = Math.floor(amount);
  var fractional = "";

  if (amount - whole)
     fractional =  fractApprox(amount - whole, maxDenominator);

  return whole + " " + fractional + " cases";
}

$(function() {
    $("#slider").slider({
        value:10 * maxDenominator,
        min: 0,
        max: maxWholeCases * maxDenominator,
        slide: function(event, ui) {
            $("#amount").val(toFraction(ui.value));
        }
    });
    $("#amount").val(toFraction($("#slider").slider("value")));
});


// from http://www.geneffects.com/briarskin/programming/newJSMathFuncs.html#fractApprox
function fractApprox(x,maxDenominator) {
    // Created 1997 by Brian Risk.  http://brianrisk.com
    maxDenominator = parseInt(maxDenominator);
    var approx = 0;
    var error = 0;
    var best = 0;
    var besterror = 0;
    for (var i=1; i <= maxDenominator; i++) {
        approx = Math.round(x/(1/i));
        error = (x - (approx/i))
        if (i==1) {best = i; besterror = error;}
        if (Math.abs(error) < Math.abs(besterror)) 
            {best = i; besterror = error;}
    }
    return (Math.round(x/(1/best)) + "/" + best);
}
于 2009-03-11T20:21:59.400 回答
0

我最终将产品页面链接到购物车中的数量,因此用户可以使用产品页面上的滑块更新分数。

于 2009-03-21T04:50:54.077 回答
0

我会远离使用分数单位。而是尝试这样的事情。

[ _ _ _ ] 个案例 [ _ _ _ ] 个单独的单位

使用 2 个 SKU,1 个用于一个案例,1 个用于单个单元。

或者使用 product.quantity_per_case 将拆分定义为案例的一部分。

当我经营餐馆时,我总是这样点菜。它几乎不需要思考,因为您处理的不是分数,而是整数个案例和整数个单位。

大多数人将需要案例或拆分,但不是两者都需要。

于 2010-06-07T13:01:04.050 回答