@ravencrow1982

Как передать значение в глобальную переменную по клику?

Сайт на Битрикс. Компонент bitrix:catalog.section выводит некий список товаров с ссылками на детальное описание:
<a href="ссылка1" class="link">Артикул1</a>
<a href="ссылка2" class="link">Артикул2</a>
<a href="ссылка3" class="link">Артикул3</a>
<a href="ссылка4" class="link">Артикул4</a>

Нужно добавить кнопку в карточке каждого товара, по клику которой ссылка на товар передается в глобальную переменную 'nametovar'.
Кнопка такая:
<a href="#" class="button-yellow js-link-form" data-id="#call-modal">Предложить цену</a>

При клике на эту кнопку открывается модальное окно формы обратной связи bitrix:main.feedback, в текстовое поле которой вставляется значение глобальной переменной.
Подскажите как это сделать?

Вот код вывода товаров в bitrix:catalog.section
<div class="items">
		<?foreach($arResult["ITEMS"] as $cell=>$arElement):?>
		<?
		$this->AddEditAction($arElement['ID'], $arElement['EDIT_LINK'], CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "ELEMENT_EDIT"));
		$this->AddDeleteAction($arElement['ID'], $arElement['DELETE_LINK'], CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BCS_ELEMENT_DELETE_CONFIRM')));
		?>
		<div class="item">
					<a href='<?=$arElement["DETAIL_PAGE_URL"]?>'>
					<div class="image">
					<?if(count($arElement["PREVIEW_PICTURE"])>0):?>
					<img src="<?=$arElement["PREVIEW_PICTURE"]["SRC"]?>" />
					<?else:?>
					<img src="/images/no_photo.png" alt="" />
					<?endif?>
					</div></a>
			<div style="text-align:center;">
				<a href="<?=$arElement["DETAIL_PAGE_URL"]?>" class="link"><?=$arElement["DISPLAY_PROPERTIES"]["ARTIKUL"]["DISPLAY_VALUE"]?></a>
					<?if($arElement["CATALOG_QUANTITY"]>0):?>
				<span class="price"><?=$arElement["PRICES"]["Для покупателей из интернет-магазина"]["PRINT_VALUE"]?></span>
					<?endif;?>
	<!-- Кнопка Предложить цену -->	
<a href="#" class="button-yellow js-link-form" data-id="#call-modal">Предложить цену</a>
			</div>
		</div>
		<?endforeach; // foreach($arResult["ITEMS"] as $arElement):?>
</div>


Вот код bitrix:main.feedback:
<? if(!defined("B_PROLOG_INCLUDED")||B_PROLOG_INCLUDED!==true)die(); ?>
<div class="mfeedback">
<?if(!empty($arResult["ERROR_MESSAGE"]))
{
	foreach($arResult["ERROR_MESSAGE"] as $v)
		ShowError($v);
}
if(strlen($arResult["OK_MESSAGE"]) > 0)
{
	?><div class="mf-ok-text"><?=$arResult["OK_MESSAGE"]?></div><?
}
?>

<form action="<?=POST_FORM_ACTION_URI?>" method="POST">
<?=bitrix_sessid_post()?>
	<div class="mf-cost">
 		<div class="mf-text">
  			<?=GetMessage("MFT_COST")?><?if(empty($arParams["REQUIRED_FIELDS"]) || in_array("COST", $arParams["REQUIRED_FIELDS"])):?><span class="mf-req">*</span><?endif?>
 		</div>
		<input type="text" name="cost" value="<?=$arResult["COST"]?>">
	</div>
	<div class="mf-name">
		<div class="mf-text">
			<?=GetMessage("MFT_NAME")?><?if(empty($arParams["REQUIRED_FIELDS"]) || in_array("NAME", $arParams["REQUIRED_FIELDS"])):?><span class="mf-req">*</span><?endif?>
		</div>
		<input type="text" name="user_name" value="<?=$arResult["AUTHOR_NAME"]?>">
	</div>
	<div class="mf-email">
		<div class="mf-text">
			<?=GetMessage("MFT_EMAIL")?><?if(empty($arParams["REQUIRED_FIELDS"]) || in_array("EMAIL", $arParams["REQUIRED_FIELDS"])):?><span class="mf-req">*</span><?endif?>
		</div>
		<input type="text" name="user_email" value="<?=$arResult["AUTHOR_EMAIL"]?>">
	</div>
	<div class="mf-tel">
 		<div class="mf-text">
  			<?=GetMessage("MFT_TEL")?><?if(empty($arParams["REQUIRED_FIELDS"]) || in_array("TEL", $arParams["REQUIRED_FIELDS"])):?><span class="mf-req">*</span><?endif?>
 		</div>
		<input type="text" name="tel" value="<?=$arResult["TEL"]?>">
	</div>
	<div class="mf-town">
 		<div class="mf-text">
  			<?=GetMessage("MFT_TOWN")?><?if(empty($arParams["REQUIRED_FIELDS"]) || in_array("TOWN", $arParams["REQUIRED_FIELDS"])):?><span class="mf-req">*</span><?endif?>
 		</div>
		<input type="text" name="town" value="<?=$arResult["TOWN"]?>">
	</div>
<!-- Здесь должно вставляться значение глобальной переменной nametovar -->
	<textarea style="display:none;" name="MESSAGE" rows="5" cols="40" readonly><?=$arResult["MESSAGE"]?><?=$GLOBALS['nametovar']?></textarea>
	

	<?if($arParams["USE_CAPTCHA"] == "Y"):?>
	<div class="mf-captcha">
		<div class="mf-text"><?=GetMessage("MFT_CAPTCHA")?></div>
		<input type="hidden" name="captcha_sid" value="<?=$arResult["capCode"]?>">
		<img src="/bitrix/tools/captcha.php?captcha_sid=<?=$arResult["capCode"]?>" width="180" height="40" alt="CAPTCHA">
		<div class="mf-text"><?=GetMessage("MFT_CAPTCHA_CODE")?><span class="mf-req">*</span></div>
		<input type="text" name="captcha_word" size="30" maxlength="50" value="">
	</div>
	<?endif;?>
	<input type="hidden" name="PARAMS_HASH" value="<?=$arResult["PARAMS_HASH"]?>">
	<input type="submit" name="submit" value="<?=GetMessage("MFT_SUBMIT")?>">
</form>
</div>
<script type="text/javascript">
var modal = (function(){
    var $overlay = $(".overlay"),
        $modal = $('#callback-modal');
    return {
      open: function(evt) {
        evt.preventDefault();
        $modal.fadeIn();
        $overlay.fadeIn();
      },
      hide: function(evt) {
        $modal.fadeOut();
        $overlay.fadeOut();
      } 
    }
  })();
  $(".js-link-form").on("click" , modal.open);
  $(".overlay").on("click", modal.hide);
</script>
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ответы на вопрос 2
@kacheleff
fullstack developer
отправляйте аякс-запрос к серверу и там делайте установку глобальной переменной.
хотя, конечно, лучше глобальными переменными не пользоваться
Ответ написан
hahenty
@hahenty
('•')
В определение метода modal.open добавить поиск требуемой ссылки, которая через один элемент от кнопки js-link-form находится в блоке карточки товара. Потом считать атрибут и вставить в нужное место. Поиск по дереву jquery-методом closest() и children(), можно другие поискать — там много.
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы