Visualizzazione dei risultati da 1 a 4 su 4

Discussione: incremento quantità

  1. #1

    incremento quantità

    Buongiorno a tutti,
    ho un problema con l'incremento delle quantità da inserire in un carrello.....
    ho 3 articoli e per ognuno vorrei inserire la quantità e vedere subito il risultato, partendo da quantità 0 (zero)
    il codice mi funziona, ma solo se al secondo click..... mi potete aiutare?!
    ecco il codice
    codice HTML:
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="UTF-8" />
        <title>carrello</title>
    <style type="text/css">
    <!--
    #Container li {
        display:block;
        clear:both;
        width:300px;
        padding:0px;
        margin-bottom:10px;
    }
    #Container .less {
        border: thin solid #030;
        padding:5px 10px;
        float:left;
        cursor:pointer;
    }
    #Container .more {
        border: thin solid #030;
        padding:5px 10px;
        float: right;
        cursor:pointer;
    }
    -->
    </style>
        <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
        <script type="text/javascript">
            function incrQty() {
                var totQty = 0;
                var partial = 0;
                $("#Container li").each(function () {
                    var qty = new Number($(this).children('.qty').val());
                    var money =  new Number($(this).children('.money').val());
                    totQty = totQty + qty;
                    partial = partial + (qty * money);
                });
                $("#totQty").html(totQty);
                $("#totMoney").html(partial);
    
            }
        function quantityWidget(){
        var currval;
        $("#Container li .less").click(function(){
            currval = parseInt($(this).parent().find("input.qty").val());
            if (currval > 0){
            $(this).parent().find("input.qty").val((currval-1));
            }
        });
        $("#Container li .more").click(function(){
            currval = parseInt($(this).parent().find("input.qty").val());    
            $(this).parent().find("input.qty").val((currval+1));
        });
        
        $("#Container li input.qty").keyup(function(){
            currval = $(this).val();
            var intRegex = /^\d+$/;
            var floatRegex = /^((\d+(\.\d *)?)|((\d*\.)?\d+))$/;
            if(isNaN(currval)) {
                alert("Inserire solo numeri");
                $(this).val(1);
            }
        });
    }
    
    $(function(){
        quantityWidget();
    });
    $(function(){
        incrQty();
    });
    
        </script>
    </head>
    <body>
        <h1>Esempio di aggiunta campi a volo e somma con jQuery</h1>
        <ul id="Container">
            <li>
                <div class="less"><a href="#" onClick="incrQty()">-</a></div><input type="text" value="1" class="qty" /><div class="more"><a href="#" onClick="incrQty()">+</a></div> x <input type="text" value="2.50" class="money" readonly />  
            </li>
            <li>
                <div class="less"><a href="#" onClick="incrQty()">-</a></div><input type="text" value="0" class="qty" /><div class="more"><a href="#" onClick="incrQty()">+</a></div> x <input type="text" value="3.00" class="money" readonly />  
            </li>
            <li>
                <div class="less"><a href="#" onClick="incrQty()">-</a></div><input type="text" value="0" class="qty" /><div class="more"><a href="#" onClick="incrQty()">+</a></div> x <input type="text" value="3.50" class="money" readonly />
            </li>
        </ul>
        <br />
        TOTALE PRODOTTI: <strong id="totQty">0</strong><br />
        TOTALE COSTO: € <strong id="totMoney">0</strong>
    </body>
    </html>

  2. #2
    Non ho esaminato approfonditamente, e ci sarebbe anche altro da rivedere, ma intanto se chiami incrQty() dentro il click del +, funziona: http://jsfiddle.net/p5mvt6qc/

    codice:
    $("#Container li .more").click(function(){
         currval = parseInt($(this).parent().find("input.qty").val());
         $(this).parent().find("input.qty").val((currval+1));
         incrQty();
    });

  3. #3
    ok funziona, grazie 1000

  4. #4
    Ciao, mi si è presentato un altro problemino.....

    in base alla funzione di incremento (vedi sopra), ho un'altra che mi fa il calcolo dei prodotti e delle confezioni....
    ora io vorrei che ogni 6 prodotti appaia il pulsante "inserisci".....
    questo è il codice
    codice:
            function incrQty() {
                var totQty33 = 0;
                var partial33 = 0;
                $("#boxQty33 li").each(function () {
                    var qty = new Number($(this).children('.qty').val());
                    var money =  new Number($(this).children('.money').val());
                    totQty33 = totQty33 + qty;
                    partial33 = partial33 + (qty * money);
                    totConf33 =totQty33/6;
                });
                $("#totQty33").html(totQty33);
                $("#totMoney33").html(partial33);
                conf33 = totQty33 % 6;
                
                $('#box33').append('<p>conf33: ' + conf33 + '</p>');
    
                if (conf33 == 0){
                    $("#totConf33").html(totConf33);
                     $('#box33').append('<a href="javascript:;" class="largeButton"  id="addCart">aggiungi al carrello</a>');
                }
            }
    l'ultimo if mi scrive il numero di confezioni quando i prodotti sono 6 o multipli e ho aggiunto il pulsante, il problema è che me lo inserisce più volte..... in grassetto ho messo il risultato del calcolo per capire l'errore, ed effettivamente al click dell'incremento mi stampa 2 volte il risultato, cioè quello di partenza e l'incremento

    praticamente così:
    conf33: 0
    conf33: 1


    conf33: 1
    conf33: 2


    conf33: 2
    conf33: 3


    mi aiutate a capire l'errore?
    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.