전자 매장 쇼핑 카트에서 분수 수량을 어떻게 처리 할 수 ​​있습니까?

StackOverflow https://stackoverflow.com/questions/635760

문제

전자 매장을 만들고 있으며 쇼핑 카트에 분수 수량을 추가 할 수있는 기능이 필요합니다.

관리자는 제품 당 분모를 설정합니다 (예 : 8은 최소 구매가 사례의 1/8임을 의미합니다)

나는 현재 a를 사용하고 있습니다 jQuery 슬라이더 그리고 수량을 표시합니다 asp:Label 제품 페이지에서는 잘 작동하지만 카트에 여러 슬라이더와 함께 손을 떼지 않습니다 (고객이 카트에서 수량을 조정할 수 있도록해야합니다).

나는 못생긴 드롭 다운 목록에서 멀리 떨어져 있고 싶다.

어떤 아이디어?

편집하다:

고정 분모가 의문의 여지가 없습니다 ... 4/8은 1/2로 표시해야합니다.

edit2 :

유용성도 중요합니다. + 1/클릭 당 분모 증분 고객이 사례의 1/16에서 3 건으로 가고 싶을 때는 너무 잘 작동하지 않습니다.

edit3 :

@RichB : 사례의 일부를 위해 SKU를 추가하면 고정 분모 문제로 돌아갑니다. 사례의 1/16에 SKU를 추가하고 사용자가 케이스의 1/2을 원한다면 8x1/16th [Cool이 아닌] 주문해야합니다. 가능한 모든 분획에 대해 SKU를 추가하려면 (이 예에서 15 SKU- 내 제품 페이지와 카트가 혼란스러워집니다.

도움이 되었습니까?

해결책 5

제품 페이지를 CART의 수량에 연결하여 사용자가 제품 페이지의 슬라이더로 분수를 업데이트 할 수 있습니다.

다른 팁

한 가지 방법은 수량 텍스트 상자와 " / [denominator]문자열을 갖는 것입니다.

당신의 유일한 문제는 분모가 무엇인지 추적하는 간단한 방법을 가지고 있다는 것입니다.

또 다른 가능한 솔루션 (고정 분모에 반대하기 때문에)은 일련의 위/아래 화살표/버튼/uthing을 사용하는 것이며 상향 및 아래를 사용하여 제품의 양 (및 각 증분/에 대한 양을 축소하거나 줄일 수 있습니다. 레이블의 분수 값을 올바르게 업데이트하십시오).

편집하다: 별도의 증분/감소 버튼을 추가하여 단일 분수 금액 대신 전체 케이스로 수량을 수정하여 더욱 정제 될 수 있습니다.

나는 단일 필드를 가질 것입니다. 3 6/4. 그러나 필드가 초점을 느슨하게하면 가장 간단한 혼합 분획으로 변환됩니다 (4 1/2 내 예를 위해).

이를 통해 입력의 유연성과 좋은 숫자 형식이 가능합니다.

업데이트: OP는 "지금 내가 지금 사용하고있는 것입니다. 그러나 카트에 도착하고 카트에 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);
}

나는 분수 단위를 사용하지 않아도됩니다. 대신 이와 같은 것을 시도하십시오.

_ _ _] 케이스 [_ _ _] 개별 단위

Skus 2 개, 케이스의 경우 1 개, 개별 장치에는 1 개를 사용하십시오.

또는 Product.quantity_per_case를 사용하여 분할을 케이스의 일부로 정의하십시오.

내가 식당을 운영했을 때, 나는 항상 이것을 주문하고 있습니다. 분수를 다루지 않고 사례 수와 전체 수의 단위를 다루기 때문에 거의 생각이 필요하지 않습니다.

대부분의 사람들은 사례 나 분할이 필요하지만 둘 다가 필요하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top