Николаев Виталий
<Разработка сайтов>

Битрикс. Добавляем количество товара в корзину через параметр URL

Для добавления в корзину товара и количества через параметр URL я использую следующий скрипт JS
<script type="text/javascript">
    $(document).ready(function() {
        $('input.quantity').change(function() {
            let obAddToCartLink = document.getElementById('addtoCart');
            console.log(obAddToCartLink);
            let link_str = String(obAddToCartLink);
            replace_str = link_str.replace(/(quantity=)[0-9]+/ig, '$1'+$(this).val());
            obAddToCartLink.setAttribute('href', replace_str);
        });
        $('input.quantity').keypress(function() {
            $(this).trigger('change');
        });
        $('a.price-card__quantyty-plus, a.price-card__quantyty-minus').click(function(e){
            e.preventDefault();
            e.stopPropagation();
            var oThisQuntityInput = $('input.quantity:first', $(this).parent().parent());
            var iThisQuantity = parseInt(oThisQuntityInput.val());
            var iSubtrahend = 1;
            if ($(this).hasClass("price-card__quantyty-plus"))
            {
                if (iThisQuantity < 2)
                {
                    return false;
                }
                iSubtrahend = iSubtrahend * (-1);
            }
            var iThisQuantityNew = iThisQuantity + iSubtrahend;
            oThisQuntityInput.val(iThisQuantityNew);
            oThisQuntityInput.trigger('change');
        });
    });
</script>

И HTML код:
<a class="price-card__quantyty-plus" href="#">+</a>
<input type="text" class="quantity price-card__quantyty-count" name="QUANTITY_1" value="1" id="QUANTITY_1">
<a class="price-card__quantyty-minus" href="#">-</a>
<a href="<?= $arResult["ADD_URL"] . '&quantity=1' ?>" id="addtoCart" class="addtoCart btn-basket">В корзину</a>

Суть JS скрипта в том что мы меняем значение в URL quantity=1 на значение которое передается из input с классом quantity.

0
Дмитрий
26.05.2020 21:03:46
Как-то у вас сложно, мой вариант через input type="number" :

шаблон:
<div class="col x1d12">
    <?$pack = $item["PROPERTIES"]["KRATNOST_UPAKOVKI"]["VALUE"] ? $item["PROPERTIES"]["KRATNOST_UPAKOVKI"]["VALUE"] : 1;
    $item['~ADD_URL'] .= '&QUANTITY=';?>

    <input type="number" name='QUANTITY' class="quantity section_list" id="<?= $item["ID"]?>-item-quantity"  
    size="5" value="<?=$pack?>" step="<?=$pack?>" min="<?=$pack?>">
</div>
js (jquery):
$('body').on('change', '.quantity', function qty() {
    let u = $(this).parent().parent().find($('[data-ajax-order]')).attr('href');
    let r = u.replace(/(QUANTITY=)[0-9]+/ig, '$1');
    let q = $(this).val();
    let a=r+q;
    $(this).parent().parent().find($('[data-ajax-order]')).attr({
        'href': a
    });

})
0
27.05.2020 09:19:13
Спасибо за вариант  8)