Было найдено решение.
И теперь код выглядит вот так.
Если вдруг количество отправляется не правильно, то нужно найти уже имеющийся js в решении, опять же зависит от самого решения.
Я реализовал данную задачу в решении DW DELUX.
Дополнительно пришлось редактировать: /bitrix/components/dresscode/catalog.item/templates/detail/js/plus.js
В переменных:
var addCartPlus = function(event){
var addCartMinus = function(event){
перед
return event.preventDefault();
Необходимо добавить
var input = $(this).parents('.qtyBlock').find('input').val();
$('[name="sum"]').val(parseInt(input) * price);
$('[name="itemQuantity_0"]').val(input);
Общий вид кода:
И теперь код выглядит вот так.
Код |
---|
<!-- Кнопка купить в кредит --> <div class="row columnRow"> <? global $USER; $rsUser = CUser::GetByID($USER->GetParam('USER_ID')); $arUser = $rsUser->Fetch(); ?> <sc ript> var price = parseInt(<?=$arResult[PRICE][DISCOUNT_PRICE]?>); //Создаем событие change через делегирование и пишем в name="sum" $(document) .on('change', '[data-max-quantity]', function(){ $('[name="sum"]').val(parseInt($(this).val()) * price); $('[name="itemQuantity_0"]').val($(this).val()); }); // Вылавливаем нажатие на минус и записываем текущее значение в inpute $('body').on('click', '.qtyBlock .minus', function(e) { var input = $(this).parents('.qtyBlock').find('input').val(); $('[name="sum"]').val(parseInt(input) * price); $('[name="itemQuantity_0"]').val(input); }) // Вылавливаем нажатие на плюс и записываем текущее значение в inpute $('body').on('click', '.qtyBlock .plus', function(e) { var input = $(this).parents('.qtyBlock').find('input').val(); $('[name="sum"]').val(parseInt(input) * price); $('[name="itemQuantity_0"]').val(input); }) </sc ript> <fo rm action="https://loans-qa.tcsbank.ru/api/partners/v1/lightweight/create" method="post"> <input name="shopId" value="test_online" type="hidden"/> <input name="showcaseId" value="test_online" type="hidden"/> <input name="promoCode" value="default" type="hidden"/> <input name="sum" value="<?=$arResult[PRICE][DISCOUNT_PRICE];?>" type="hidden"> <input name="itemName_0" value="<?=$arResult["NAME"];?>" type="hidden"/> <input name="itemQuantity_0" value="<?=$arResult[PRICE][COUNT_PRICES]?>" type="hidden"/> <input name="itemPrice_0" value="<?=$arResult[PRICE][RESULT_PRICE][BASE_PRICE];?>" type="hidden"/> <input name="itemCategory_0" value="<?=$arResult[LAST_SECTION][NAME];?>" type="hidden"/> <input name="customerEmail" value="<?=$arUser[EMAIL]?>" type="hidden"/> <input name="customerPhone" value="<?=$arUser[PERSONAL_MOBILE]?>" type="hidden"/> <?if(!empty($arResult["PRICE"])):?> <?if($arResult["CATALOG_AVAILABLE"] != "Y"):?> <?else:?> <input type="submit" class="btn-simple-credit btn-medium-credit btn-border-credit changeID changeQty changeCart" value="Купи в кредит" data-id="<?=$arResult["ID"]?>" data-quantity="<?=$arResult["EXTRA_SETTINGS"]["BASKET_STEP"]?>"/> <?endif;?> <?else:?> <?endif;?> </form> </div> </div> </div> <div class="secondTool"> <div class="qtyBlock row"> <img src="<?=SITE_TEMPLATE_PATH?>/images/qty.png" alt="" class="icon"> <label class="label"><?=GetMessage("QUANTITY_LABEL")?> </label> <a href="#" class="minus"></a> <input type="text" class="qty"<?if(!empty($arResult["PRICE"]["EXTENDED_PRICES"])):?> data-extended-price='<?=\Bitrix\Main\Web\Json::encode($arResult["PRICE"]["EXTENDED_PRICES"])?>'<?endif;?> value="<?=$arResult["EXTRA_SETTINGS"]["BASKET_STEP"]?>" data-step="<?=$arResult["EXTRA_SETTINGS"]["BASKET_STEP"]?>" data-max-quantity="<?=$arResult["CATALOG_QUANTITY"]?>" data-enable-trace="<?=(($arResult["CATALOG_QUANTITY_TRACE"] == "Y" && $arResult["CATALOG_CAN_BUY_ZERO"] == "N") ? "Y" : "N")?>"> <a href="#" class="plus"></a> </div> </div> |
Я реализовал данную задачу в решении DW DELUX.
Дополнительно пришлось редактировать: /bitrix/components/dresscode/catalog.item/templates/detail/js/plus.js
В переменных:
var addCartPlus = function(event){
var addCartMinus = function(event){
перед
return event.preventDefault();
Необходимо добавить
var input = $(this).parents('.qtyBlock').find('input').val();
$('[name="sum"]').val(parseInt(input) * price);
$('[name="itemQuantity_0"]').val(input);
Общий вид кода:
Код |
---|
var addCartPlus = function(event){ var $qtyBox = $("#catalogElement .secondTool .qtyBlock .qty"); var $addCartBtn = $("#catalogElement .addCart.changeQty"); var xCurrentQtyValue = Number($qtyBox.val()); var xQtyStep = Number($qtyBox.data("step")); var xQtyExpression = Number((xCurrentQtyValue * 10 + xQtyStep * 10) / 10); //js magic .9999999 var _enableTrace = $qtyBox.data("enable-trace"); var _maxQuantity = Number($qtyBox.data("max-quantity")); var __qtyError = false; var xTmpExpression = 0; if(_enableTrace == "Y"){ xTmpExpression = xQtyExpression; xQtyExpression = (xQtyExpression > _maxQuantity) ? _maxQuantity : xQtyExpression; if(xTmpExpression != xQtyExpression){ __qtyError = true; } } $qtyBox.val(xQtyExpression); $addCartBtn.data("quantity", xQtyExpression); //extented prices reCalcPrice($qtyBox, xQtyExpression); //set or remove error __qtyError === true ? $qtyBox.addClass("error") : $qtyBox.removeClass("error"); var input = $(this).parents('.qtyBlock').find('input').val(); $('[name="sum"]').val(parseInt(input) * price); $('[name="itemQuantity_0"]').val(input); return event.preventDefault(); }; var addCartMinus = function(event){ var $qtyBox = $("#catalogElement .secondTool .qtyBlock .qty"); var $addCartBtn = $("#catalogElement .addCart.changeQty"); var xCurrentQtyValue = Number($qtyBox.val()); var xQtyStep = Number($qtyBox.data("step")); var xQtyExpression = Number((xCurrentQtyValue * 10 - xQtyStep * 10) / 10); //js magic .9999999 var _enableTrace = $qtyBox.data("enable-trace"); var _maxQuantity = Number($qtyBox.data("max-quantity")); var __qtyError = false; var xTmpExpression = 0; xQtyExpression = xQtyExpression > xQtyStep ? xQtyExpression : xQtyStep; if(_enableTrace == "Y"){ xTmpExpression = xQtyExpression; xQtyExpression = (xQtyExpression > _maxQuantity) ? _maxQuantity : xQtyExpression; if(xTmpExpression != xQtyExpression){ __qtyError = true; } } $qtyBox.val(xQtyExpression); $addCartBtn.data("quantity", xQtyExpression); //extented prices reCalcPrice($qtyBox, xQtyExpression); //set or remove error __qtyError === true ? $qtyBox.addClass("error") : $qtyBox.removeClass("error"); var input = $(this).parents('.qtyBlock').find('input').val(); $('[name="sum"]').val(parseInt(input) * price); $('[name="itemQuantity_0"]').val(input); return event.preventDefault(); }; |