#javascript #jquery #input #shopping-cart
#javascript #jquery #ввод #корзина покупок
Вопрос:
Неверное значение фиксируется для текстового значения количества, когда я нажимаю на
-
кнопку регулировки количества или корзины. Например, начальное значение количества со стороны сервера равно 4.
Когда я нажимаю плюс, пользовательский интерфейс отображается как 5, но в console.log
нем значение считывается как устаревшее 4.
Если я попробую другой способ захвата нажатия клавиши, он сможет считывать значение только тогда, когда пользователь фактически переходит к взаимодействию с текстовым полем.
Интересно, как получить правильное конечное значение после нажатия кнопки…
$(document).on('click', '.qty-control', function(event) {
var cartid = $(this).attr("data-cartid");
var qty = $('#qty_' cartid).val();
console.log(qty);
});
$(document).on('keyup change click', '.itemqty', function(event) {
alert('trigger');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="javascript:void(0)" class="qty-control left" data-click="decrease-qty" data-target="#qty_25" data-cartid="25">
<i class="fa fa-minus">-</i>
</a>
<input type="number" name="qty" value="4" class="form-control itemqty" id="qty_25" min="0" placeholder="Qty">
<a href="javascript:void(0)" class="qty-control right" data-click="increase-qty" data-target="#qty_25" data-cartid="25">
<i class="fa fa-plus"> </i>
</a>
Комментарии:
1. В вашем примере значение никогда не изменяется, и консоль показывает правильное. Я не понимаю, в чем проблема
2. Думаю, я только что нашел ответ. Шаблон, который я использую, использует data-target=»# » для ссылки на идентификатор (который является вводом количества). Я полагаю, что сам шаблон добавил got build в событие jquery, увеличивающее значение, когда я нажимаю знак . Но оно не отобразит правильное значение, когда я захочу получить. Поэтому я просто удаляю data-target и теперь использую обычный способ.
Ответ №1:
Вам не хватает кода, который изменяет количество:
var qtyChange = {'increase-qty': 1, 'decrease-qty': -1};
$(document).on('click', '.qty-control', function(event) {
var cartid = $(this).attr("data-cartid");
var qty = parseInt($('#qty_' cartid).val()) qtyChange[$(this).data('click')];
console.log(qty);
$('#qty_' cartid).val(qty);
});
$(document).on('keyup change click', '.itemqty', function(event) {
alert('trigger');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="javascript:void(0)" class="qty-control left" data-click="decrease-qty" data-target="#qty_25" data-cartid="25">
<i class="fa fa-minus">-</i>
</a>
<input type="number" name="qty" value="4" class="form-control itemqty" id="qty_25" min="0" placeholder="Qty">
<a href="javascript:void(0)" class="qty-control right" data-click="increase-qty" data-target="#qty_25" data-cartid="25">
<i class="fa fa-plus"> </i>
</a>