Получить идентификатор зацикленного элемента в html

#html #django #ajax

#HTML #django #ajax

Вопрос:

 {% for product in products %}
...
         <form class="form-inline">
              <div class="input-group">
                 <input type="hidden" name="productId" id="productId" value="{{product.id}}">
                 <input type="text" class="form-control" name="productQuantity" id="productQuantity" style="width: 40px; height: 40px;" placeholder="1">
                 <div class="input-group-append">
                     <button type='button' name="addToCart" id="addToCart" value=" " class="btn btnother"><i class="fas fa-plus fa-sm" style="color: white;"></i></button>
                 </div>
             </div>
        </form>   
...
{% endfor %}
  

Это упрощенный код!

Итак, у меня есть веб-сайт Django для электронной коммерции. На главной странице я представляю карточки разных товаров с возможностью добавления их в корзину.

Каждый раз, когда кто-то добавляет товар в корзину, я хочу обновлять только изображение корзины в заголовке. Итак, я хочу использовать AJAX для передачи productId и productQuantity моему views.py .

Вот мой JS:

 $(document).ready(function(){
  $('form').click(function() {

    var productId = $('#productId').val();
    var productQuantity = $('#productQuantity').val();

    if (Number.isInteger(Number(productQuantity))){
      productQuantity = productQuantity;
    } else {
      productQuantity = 1;
    }
  
    $.ajax({
      url: 'update',
      type: 'post',
      cache: false,
      data: { 'productId' : productId,
              'productQuantity' : productQuantity }
    });

  });
});
  

Однако, когда я добавляю в корзину, productId печатаемая информация одинакова для всех продуктов. Я думаю, это потому, что после for loop того, как он хранит только последний productId

Каков был бы способ получить идентификатор каждого отдельного элемента?

Ответ №1:

Поскольку у каждого form есть a productId , вы можете указать диапазон при получении значения productId , вы можете использовать приведенный ниже код для поиска productId только в пределах текущего form :

 var productId = $(this).find('#productId').val();