首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在购物车中防止重复输入?如果尝试,那么想要qty++。jQuery

如何在购物车中防止重复输入?如果尝试,那么想要qty++。jQuery
EN

Stack Overflow用户
提问于 2019-04-16 19:11:04
回答 2查看 180关注 0票数 0

我从供应商那里做了一个购物车,选择产品并给出数量,然后添加到购物车中。但在下一次同样的产品添加到购物车在新的一排。我想要防止它,并想增加数量。还有一个问题,我不能把每一行的总和加起来。

下面是我显示购物车的HTML代码:

代码语言:javascript
复制
    <table class="table table-bordered table-sm">
            <thead>
                <tr class="text-center">
                    <th>ID</th>
                    <th>Name</th>
                    <th>UoM</th>
                    <th>Unite Price</th>
                    <th>Qty</th>
                    <th>L. Total</th>
                    <th>Action</th>
                </tr>
            </thead>
            <tbody>
            </tbody>
            <tfoot>
                <tr class="text-right">
                    <td colspan="5" style="font-weight: bold;">Grand Total</td>
                    <td class="total text-right pr-5"></td>
                </tr>
            </tfoot>
      </table>

以下是我的jQuery代码:

代码语言:javascript
复制
$('#inputQty').keyup(function(event){
        var id = $('#pro_select').val();
        var qty = $(this).val();
        if (event.keyCode === 13 ) {
            $.ajax({
                url: "{{url('selectProduct')}}",
                method: 'POST',
                dataType: 'JSON',
                data: {id:id, _token: '{{csrf_token()}}'},
                success: function(data){
                    var lineTotal = data.buy_price * qty;
                        $('tbody').append('<tr><td class="text-center">'+ data.id +'</td><td>'+ data.name +'</td><td class="text-center">'+ data.uom +'</td><td class="text-right pr-5 price">'+ data.buy_price +'</td><td class="text-right pr-5 qty">'+ qty +'</td><td class="text-right pr-5 lineTotal">'+ lineTotal +'</td><td class="text-center"><button class="btn btn-sm btn-danger remove"><i class="fas fa-times"></i></button></td></tr>');

                }
            });
        }            
    });
EN

回答 2

Stack Overflow用户

发布于 2019-04-16 19:24:52

您可以通过在if (event.keyCode === 13 ) {...}条件中使用$(this).val('');来清除输入字段。

如果要限制重复条目,请将input中的下一个值设置为$(this).val(++qty)

票数 0
EN

Stack Overflow用户

发布于 2019-04-18 15:34:04

最后我解决了这个问题。

下面是我的代码:

代码语言:javascript
复制
<script>
  $(function(){
    $('#pro_select').change(function(){
        var id = $(this).val();
        $.ajax({
            url: "{{url('selectProduct')}}",
            method: 'POST',
            dataType: 'JSON',
            data: {id:id, _token: '{{csrf_token()}}'},
            success: function(data){
                var newRow = '<tr>'+
                                    '<td class="text-center">'+
                                        '<input type="hidden" class="id" value="'+ data.id +'"/>'+ data.id +'</td>'+
                                    '<td>'+ data.name +'</td>'+
                                    '<td class="text-center">'+ data.uom +'</td>'+
                                    '<td>'+
                                        '<input type="text" class="form-control form-control-sm price" value="'+ data.buy_price +'" readonly /></td>'+
                                    '<td>'+
                                        '<input type="number" id="inputQty" class="form-control form-control-sm qty"/></td>'+
                                    '<td>'+
                                        '<input type="text" class="form-control form-control-sm text-right lineTotal" readonly/></td>'+
                                    '<td class="text-center">'+
                                        '<button class="btn btn-sm btn-danger remove"><i class="fas fa-times"></i></button>'+
                                    '</td>'+
                            '</tr>';
                            if ($("tbody [value='"+data.id+"']").length < 1){
                                    $("tbody").prepend(newRow);
                            }
                            else {
                                alert("You have already added this Product. You Can not add this again. Please update this Product Quantity!");
                            }

                $('#inputQty').focus();

            }
        });           
    });

    $('table').delegate('.remove','click', function(){
        $(this).parent().parent().remove();
        total();
    });

    $('tbody').delegate('.price, .qty','keyup',function(){
        var tr = $(this).parent().parent();
        var price = tr.find('.price').val();
        var qty = tr.find('.qty').val();
        var lineTotal = (price * qty);
        tr.find('.lineTotal').val(lineTotal);
        total();
    });

    function total(){
        var total = 0;
        $('.lineTotal').each(function(){
            var amount = $(this).val() -0;
            total += amount;
        });
        $('.total').html(total +' /=');
    }
  });
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55706820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档