Domanda

Sto costruendo un negozio online e devo avere la possibilità di aggiungere quantità frazionarie al carrello.

L'amministratore imposterà un denominatore per prodotto (ad esempio 8 significherebbe che l'acquisto minimo è 1/8 di un caso)

Attualmente utilizzo un jQuery slider e visualizzo la quantità nel asp: Etichetta che funziona perfettamente sulle pagine dei prodotti, tuttavia sfugge di mano con più cursori nel carrello (devo consentire al cliente di regolare le quantità nel carrello).

Voglio davvero stare lontano dai brutti elenchi a discesa.

Qualche idea?

EDIT:

Il denominatore fisso è fuori discussione ... 4/8 devono essere visualizzati come 1/2 ...

EDIT2:

Anche l'usabilità è importante, l'incremento di + 1 / denominatore per clic non funzionerà troppo bene quando un cliente desidera passare da 1/16 di caso a 3 casi

Edit3:

@RichB: l'aggiunta di uno SKU per una frazione di un caso risale al problema del denominatore fisso. se aggiungo uno SKU per 1/16 di un caso e un utente desidera 1/2 di un caso, dovrebbero ordinare 8x1 / 16th's [not cool]. Se vuoi aggiungere uno SKU per ogni possibile frazione (15 SKU in questo esempio, questo renderà ingombrante la mia pagina Prodotto e il CARRELLO.

È stato utile?

Soluzione 5

Ho finito per collegare una pagina del prodotto alle quantità nel carrello, in modo che gli utenti possano aggiornare le frazioni con il cursore sulla pagina del prodotto.

Altri suggerimenti

Un modo sarebbe che tu abbia la casella di testo della quantità seguita da un " / [denominatore] " stringa che consentirebbe loro di dire qualcosa come [4] / 8 per designare mezzo caso di 8.

Il tuo unico problema è che avrai un metodo semplice per tenere traccia di quali sono questi denominatori.

Un'altra possibile soluzione (dal momento che sei contrario ad avere un denominatore fisso), è quella di utilizzare una serie di frecce / pulsanti Su / Giù / qualunque cosa e puoi usare su e giù per aumentare o diminuire la quantità di prodotto (e su ogni incremento / decremento aggiorna correttamente il valore frazionario nell'etichetta).

Modifica : questo potrebbe essere ulteriormente perfezionato aggiungendo un pulsante di incremento / decremento separato per modificare la quantità di un intero caso anziché di un singolo importo frazionario.

Avrei un singolo campo, che può essere modificato in una quantità come 3 6/4 . Tuttavia, quando il campo perde lo stato attivo, questo verrà convertito nella frazione mista più semplice ( 4 1/2 per il mio esempio).

Ciò consente flessibilità di input e una buona formattazione dei numeri.

  

Aggiorna : OP dice " è ESATTAMENTE quello che sto usando in questo momento, tuttavia quando arrivo al CARRELLO [e ho 10 articoli nel carrello] la gestione di più cursori diventa problematica. ecco perché sto cercando una soluzione alternativa "

Qualcosa come il seguente funziona?

Guardalo funzionare qui . (modificalo qui )

<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);
}

Starei lontano dall'uso di unità frazionarie. Prova invece qualcosa del genere.

[_ _ _] casi [_ _ _] singole unità

Usa 2 SKU, 1 per un caso e 1 per una singola unità.

O definisci una divisione come una frazione di un caso, con product.quantity_per_case.

Quando gestivo i ristoranti, ordinavo sempre così. Non richiede quasi alcun pensiero, poiché non hai a che fare con le frazioni, ma un numero intero di casi e un numero intero di unità.

La maggior parte delle persone avrà bisogno di casi o divisioni, ma non di entrambi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top