首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将按钮和字段值与模板中for循环中的jQuery对象连接起来

如何将按钮和字段值与模板中for循环中的jQuery对象连接起来
EN

Stack Overflow用户
提问于 2017-01-28 00:18:14
回答 1查看 291关注 0票数 0

当我发布表单时,任何数量都会更新为第一个数量字段中的值。我不知道如何连接这个值的数量值和特定的提交按钮。

我在template.html中的表单

代码语言:javascript
复制
{% for item in cart %}
    <form action="{% url 'product_update' item.product.id %}" method="POST">
      {% csrf_token %}
      <input type="number" class="form-control" id='quantity' value="{{ item.quantity }}">
      <button type="submit" class="btn btn-link update-product">
          <span class="glyphicon glyphicon-refresh"> </span>
      </button>
    </form>
{% endif %}

我的观点(我使用django-cart作为我的购物车)

代码语言:javascript
复制
def product_update(request, id):
    product = Product.objects.get(id=id)
    cart = Cart(request)
    quantity = request.POST['quantity']
    unit_price = product.price

    cart.update(product, quantity, unit_price)
    return JsonResponse({'status': 'success'})

我的javascript

代码语言:javascript
复制
function updateProductQuantity(){
  $('button.update-product').click(function(){
    var link = $(this).parents('form')
    var quantity = $('#quantity').val()  //I think my problem is here
    $.ajax({
        'url': link.attr('action'),
        'type': 'POST',
        'dataType': 'json',
        'data': {
            'quantity': quantity,
            'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val()
        },
        'success': function(data, status, xhr){
            alert(data['status']);
            return false;
        }
    });
    return false;
});
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-28 00:24:03

您可以这样做:

代码语言:javascript
复制
 var quantity = $(this).parents('form').find('#quantity').val();

或者,更有效的方法是选择表单本身。例如:

代码语言:javascript
复制
 $('form').on('submit', function(){
    var link = $(this);
    var quantity = $(this).find('#quantity').val();
    $.ajax({
        'url': link.attr('action'),
        'type': 'POST',
        'dataType': 'json',
        'data': {
            'quantity': quantity,
            'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val()
        },
        'success': function(data, status, xhr){
            alert(data['status']);
            return false;
        }
    });
    return false;
});

你的问题是你说“选择页面上的第一个"#quantity”并获得它的值,你想在哪里获得目标表单#quantity的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41898421

复制
相关文章

相似问题

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