Номер порта всегда отличается на обоих концах
Вам нужно использовать ключевое слово this
для ссылки на текущий элемент, нажав кнопку, затем перейдите к родительскому элементу и выберите соответствующий вход с именем idVal
, который содержит if
текущего продукта:
var product_id = $(this).parent().find('[name="idVal"]').val();
И вы должны передать this
вашей функции в onClick
:
<button type="button" onclick="addProductInCart(this)">Добавить в
корзину
function addProductInCart(self) {
event.preventDefault();
alert($(self).parent().find('[name="idVal"]').val());
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<div class="col-lg-2 product">
<h3>name 1</h3>
<img src="" width="200" height="200"><br>
<h3>111</h3>
<button type="button" onclick="addProductInCart(this)">Добавить в корзину</button>
<input type="hidden" name="idVal" value="1">
</div>
</form>
<form>
<div class="col-lg-2 product">
<h3>name 2</h3>
<img src="" width="200" height="200"><br>
<h3>222</h3>
<button type="button" onclick="addProductInCart(this)">Добавить в корзину</button>
<input type="hidden" name="idVal" value="2">
</div>
</form>
<form>
<div class="col-lg-2 product">
<h3>name 3</h3>
<img src="" width="200" height="200"><br>
<h3>333</h3>
<button type="button" onclick="addProductInCart(this)">Добавить в корзину</button>
<input type="hidden" name="idVal" value="3">
</div>
</form>
<form class="product-form">
<div class="col-lg-2 product">
<h3>{{$p->name}}</h3>
<img src="{{$p->image}}" width="200" height="200"><br>
<h3>{{$p->price}}</h3>
<button type="submit" onclick="addProductInCart(this)" >Добавить в корзину</button>
<input type="hidden" name = "idVal" value = "{{$p->id}}">
{{ csrf_field() }}
</div>
</form>
Дайте форму классу. Теперь вы можете получить значения, связанные с ним.
$('.product-form').submit(function() {
alert($(this).serialize());
var product = 1;
var token = $("input[name=_token]").val();
$.ajax({
type: "POST",
url: "addToCart",
data: {"_token": token, "product": product},
success: function (result) {
$("#product-count").html(result);
}
})
return false;
});
вам не нужно хранить его в скрытом поле, чтобы извлечь его в функцию addproductInCart ()
, вы можете передать значение с funtion, как показано ниже:
addProductInCart(<?= $p->id ?>)
и в функции вы можете получить id, следуя
addProductInCart($id)
{
alert($id);
}