Было найдено решение.
И теперь код выглядит вот так.
[CODE]<!-- Кнопка купить в кредит -->
<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>
[/CODE]Если вдруг количество отправляется не правильно, то нужно найти уже имеющийся js в решении, опять же зависит от самого решения.
Я реализовал данную задачу в решении DW DELUX.
Дополнительно пришлось редактировать: [COLOR=#00a650]/bitrix/components/dresscode/catalog.item/templates/detail/js/plus.js[/COLOR]
В переменных:
[COLOR=#00a650]var addCartPlus = function(even[/COLOR][COLOR=#00a650]t){[/COLOR]
[COLOR=#00a650]var addCartMinus = function(event){[/COLOR]
перед
[COLOR=#00a650]return event.preventDefault();[/COLOR]
Необходимо добавить
[COLOR=#00a650]var input = $(this).parents('.qtyBlock').find('input').val();[/COLOR]
[COLOR=#00a650]$('[name="sum"]').val(parseInt(input) * price);[/COLOR]
[COLOR=#00a650]$('[name="itemQuantity_0"]').val(input);[/COLOR]
Общий вид кода:[CODE]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();
};[/CODE]
И теперь код выглядит вот так.
[CODE]<!-- Кнопка купить в кредит -->
<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>
[/CODE]Если вдруг количество отправляется не правильно, то нужно найти уже имеющийся js в решении, опять же зависит от самого решения.
Я реализовал данную задачу в решении DW DELUX.
Дополнительно пришлось редактировать: [COLOR=#00a650]/bitrix/components/dresscode/catalog.item/templates/detail/js/plus.js[/COLOR]
В переменных:
[COLOR=#00a650]var addCartPlus = function(even[/COLOR][COLOR=#00a650]t){[/COLOR]
[COLOR=#00a650]var addCartMinus = function(event){[/COLOR]
перед
[COLOR=#00a650]return event.preventDefault();[/COLOR]
Необходимо добавить
[COLOR=#00a650]var input = $(this).parents('.qtyBlock').find('input').val();[/COLOR]
[COLOR=#00a650]$('[name="sum"]').val(parseInt(input) * price);[/COLOR]
[COLOR=#00a650]$('[name="itemQuantity_0"]').val(input);[/COLOR]
Общий вид кода:[CODE]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();
};[/CODE]