#javascript #html #jquery
Вопрос:
У меня на сайте есть три такие кнопки:
Я пытаюсь увеличивать и уменьшать счетчики, но это работает только для двух, первый работает нормально, но второй добавляет 2 к каждому приращению, а третий вообще не работает.
Вот код:
$('.plus').on('click', function(e) { var val = parseInt($(this).prev('input').val()); $(this).prev('input').val(val 1); console.log(val); }); $('.minus').on('click', function(e) { var val = parseInt($(this).next('input').val()); if (val !== 0) { $(this).next('input').val(val - 1); } if (val == 0) { $(this).next('input').val(1); } });
lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"gt;lt;/scriptgt; lt;label class="quantitiy" for="Quantity-collection-template-new"gt;lt;/labelgt; lt;input class="minus minus1" type="button" value="-"gt; lt;input type="number" id="Quantity-collection-template-new" name="quantity" value="1" min="1" class="product-form__input qty" pattern="[0-9]*" data-quantity-input=""gt; lt;input class="plus plus1" type="button" value=" "gt; lt;label class="quantitiy" for="Quantity-collection-template-new"gt;lt;/labelgt; lt;input class="minus minus2" type="button" value="-"gt; lt;input type="number" id="Quantity-collection-template-new" name="quantity" value="1" min="1" class="product-form__input qty" pattern="[0-9]*" data-quantity-input=""gt; lt;input class="plus plus2" type="button" value=" "gt; lt;label class="quantitiy" for="Quantity-collection-template-new"gt;lt;/labelgt; lt;input class="minus minus3" type="button" value="-"gt; lt;input type="number" id="Quantity-collection-template-new" name="quantity" value="1" min="1" class="product-form__input qty" pattern="[0-9]*" data-quantity-input=""gt; lt;input class="plus plus3" type="button" value=" "gt;
Комментарии:
1. ваш код работает нормально. кроме того, когда вы нажимаете минус, а он равен 0, он увеличивается до 1
2. Я сделал ваш код доступным для выполнения. Как видите, все работает как и ожидалось. В чем проблема?
3. Хорошо, извините и спасибо вам. Я думал, что в этом и была проблема.
4. Просто говорю: вы должны стараться быть менее агрессивными, помогая людям, если его вопрос недостаточно ясен или если вы считаете, что требуется дополнительная информация, вы могли бы спросить о деталях вместо того, чтобы быть грубым. Но, по сравнению с тем, что есть на сайте, есть одна небольшая разница. Предоставленный вами код используется
.plus
и.minus
в качестве идентификатора, веб-сайт использует.plus1
и.plus2
и нет.plus3
. итак, проверьте идентификаторы и повторите попытку. Если вы могли бы добавить код с веб-сайта здесь, чтобы мы могли видеть его в качестве ссылки на будущее, это плюс.
Ответ №1:
Здесь легче ответить на этот вопрос.
Вы используете .plus1
и .plus2
, но .plus3
на веб — сайте нет привязок. Что отличается от того, что вы опубликовали здесь, вот почему это работает, так что мой совет:
Просто удалите дубликат и используйте ту же логику здесь, попробуйте еще раз и дайте нам знать.
$('.plus').on('click', function(e) { // omitted }); $('.minus').on('click', function(e) { // omitted });
Это то, что у вас есть прямо сейчас на сайте:
$('.plus1').on('click', function(e) { var val = parseInt($(this).prev('input').val()); $(this).prev('input').val(val 1); }); $('.minus1').on('click', function(e) { var val = parseInt($(this).next('input').val()); if (val !== 0) { $(this).next('input').val(val - 1); } if (val == 0) { $(this).next('input').val(1); } });
И еще один раздел;
$('.plus2').on('click', function(e) { var val = parseInt($(this).prev('input').val()); $(this).prev('input').val(val 1); }); $('.minus2').on('click', function(e) { var val = parseInt($(this).next('input').val()); if (val !== 0) { $(this).next('input').val(val - 1); } if (val == 0) { $(this).next('input').val(1); } });
Пара предложений;
Не используйте один и тот же идентификатор, создайте некоторую логику, чтобы добавить по крайней мере индекс для каждого идентификатора, если они представляют более или менее одно и то же. product-1
product-2
и так далее. Тот же идентификатор-это рецепт катастрофы, и с самого начала нет-нет.
Не забудьте обновить оба id
for
свойства и с уникальными идентификаторами.
minus/plus - index
работает.
Комментарии:
1. Спасибо! На самом деле это было изначально
.plus
,.minus
но у кнопок увеличения была та же проблема. Я не уверен, почему? У Shopify есть раздражающие проблемы с кэшированием, поэтому я пока не вижу изменений сам. Если вы видитеplus2
версию, разве она не должна работать для этого? Он все еще добавляет 2 каждый раз … ?