Задать вопрос
@Grizar

Как запретить нажимать кнопку большезаданного?

Имею такую разметку (кнопка опенкар)
<li class="p-qty">
       <font style="vertical-align: inherit;">
          <font style="vertical-align: inherit;">В наличии шт:   </font>
        </font>
        <span class="pr-quantity">
          <font style="vertical-align: inherit;">
             <font style="vertical-align: inherit;">47</font>
          </font>
       </span>
</li>

здесь нам важна цифра 47, она может бытьлюбая, это кол-чо товара в наличии.

далее имею выбор количества, кнопочки + - , это добавить убрать товар
вот код, скопировал с скриптом, чтоб было понятно
<div>
               <span class="qty">
              <label class="control-label text-qty" for="input-quantity">Количество</label>
              <a href="javascript:;" class="journal-stepper">
              <font style="vertical-align: inherit;">
              <font style="vertical-align: inherit;">   -    </font>
              </font>
              </a>
             
              <input type="text" name="quantity" value="1" size="2" data-min-value="1" id="input-quantity" class="form-control">   ///////эта строка показывает само поле с цифрами где добавляется количество ,т.е. цифры меняются
              
              <a href="javascript:;" class="journal-stepper">
              <font style="vertical-align: inherit;">
              <font style="vertical-align: inherit;">   +  </font>
              </font>
              </a>
              <input type="hidden" name="product_id" value="2923">
              
              <script>
                /* quantity buttons */
                var $input = $('.cart input[name="quantity"]');
                function up() {
                  var val = parseInt($input.val(), 10) + 1 || parseInt($input.attr('data-min-value'), 10);
                  $input.val(val);
                }
                function down() {
                  var val = parseInt($input.val(), 10) - 1 || 0;
                  var min = parseInt($input.attr('data-min-value'), 10) || 1;
                  $input.val(Math.max(val, min));
                }
                $('<a href="javascript:;" class="journal-stepper">-</a>').insertBefore($input).click(down);
                $('<a href="javascript:;" class="journal-stepper">+</a>').insertAfter($input).click(up);
                $input.keydown(function (e) {
                  if (e.which === 38) {
                    up();
                    return false;
                  }
                  if (e.which === 40) {
                    down();
                    return false;
                  }
                });
              </script>
              </span>
                <button type="button" id="button-cart" data-loading-text="Φόρτωση..." class="button">
                <span class="button-cart-text">
                <font style="vertical-align: inherit;">
                <font style="vertical-align: inherit;">Корзина</font>
                </font>
                </span>
                </button>
                <button type="button" pa="true" class="btn btn-success btn-lg btn-block" id="pa-btn">
                <i class="fa fa-bell-o">  </i>  &nbsp;Ενημερώστε με!   </button>

                			
                              </div>


эта строка , между + и -
<input type="text" name="quantity" value="1" size="2" data-min-value="1" id="input-quantity" class="form-control">

669955b9ade48903760978.png

Вопрос, нужен скрипт, который подхватит изменяющуюся цифру при нажатии на плюсик + , которая между + и - , и отключит (не даст нажать больше) плюсик + , если эта цифра будет больше чем заданная, в нашем случае 47, т.е. когда уже 47 , плюсик отключили.
При нажатии на + или - в строке (которую выделял выше), которая между + и - , ничего не происходит..
<input type="text" name="quantity" value="1" size="2" data-min-value="1" id="input-quantity" class="form-control">


вообщем вот такой вот вопрос
  • Вопрос задан
  • 142 просмотра
Подписаться 2 Простой 3 комментария
Решения вопроса 2
badcasedaily1
@badcasedaily1
data engineer, author habr
Все просто.

<script>
  $(document).ready(function() {
    var maxQuantity = parseInt($('.pr-quantity').text().trim());

    function updateQuantity(val) {
      var $input = $('#input-quantity');
      var currentVal = parseInt($input.val(), 10);
      currentVal = isNaN(currentVal) ? 1 : currentVal;
      $input.val(Math.min(currentVal + val, maxQuantity));

      if (currentVal + val >= maxQuantity) {
        $('.journal-stepper').last().prop('disabled', true);
      } else {
        $('.journal-stepper').last().prop('disabled', false);
      }
    }

    $('.journal-stepper').first().click(function() {
      updateQuantity(-1);
    });

    $('.journal-stepper').last().click(function() {
      updateQuantity(1);
    });

    $('#input-quantity').keydown(function(e) {
      if (e.which === 38) {
        updateQuantity(1);
        return false;
      }
      if (e.which === 40) {
        updateQuantity(-1);
        return false;
      }
    });
  });
</script>
Ответ написан
@Grizar Автор вопроса
было
var val = parseInt($input.val(), 10) + 1 || parseInt($input.attr('data-min-value'), 10);
                  $input.val(val);
                }
                function down() {
                  var val = parseInt($input.val(), 10) - 1 || 0;
                  var min = parseInt($input.attr('data-min-value'), 10) || 1;


стало
в этих строках скрипта который был, единицы заменил на ноли, вроде теперь клацает правильно
var val = parseInt($input.val(), 10) + 0 || parseInt($input.attr('data-min-value'), 10);
                  $input.val(val);
                }
                function down() {
                  var val = parseInt($input.val(), 10) - 0 || 0;
                  var min = parseInt($input.attr('data-min-value'), 10) || 1;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
в вашем случае все просто.

Если кол-во меньше либо равно нулю, то облом.
Если больше либо равно максимуму, то облом.

Вопрос в том, как проверяется реальное кол-во остатков?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 11:03
5000 руб./за проект
18 дек. 2024, в 10:44
130000 руб./за проект
18 дек. 2024, в 10:02
7000 руб./за проект