Битрикс-разработчик Вероника Малышева

Bitrix JS

Bitrix JS

битрикс документация
https://dev.1c-bitrix.ru/api_help/js_lib/index.php

фишечки
https://prominado.ru/blog/bitriks-js/

BX("elemId").value = 'value'; 
BX("elemId").innerHTML = 'texthtml';
установка атрибутов
BX("elemId").setAttribute("src",pathSrc);
BX("elemId").getAttribute("src");
работа с классами
BX.addClass(BX("elemId"), 'className');
BX.removeClass(BX("elemId"), 'className');
BX.toggleClass(BX("elemId"), ["arrowUp", "arrowDown"]);
BX.hasClass(BX("elemId"), 'className');
добавить
BX.append(BX.create('span', {text: 'someText'}),BX('elemId'));
удалить
BX.remove(BX("elemId"));

показать-скрыть
BX.show(BX("elemId"));
BX.hide(BX("elemId"));

поиск
var fields = BX.findChild(BX(elemId), {class: 'className'}, true, true);
fields.forEach(function(element){
   console.log(element);
});
Маска на телефон
//php 
CJSCore::Init(array('masked_input'));
//js
var phoneVal =  BX('orderInputPhone').value; //в value номер, из предыдущего заказа, например
var phoneMasked = new BX.MaskedInput({
        mask: '+7 999 999 9999', // устанавливаем маску
        input: BX('orderInputPhone'),
        placeholder: '_' // символ замены +7 ___ ___ __ __
}); 
if(phoneVal != ''){   
       phoneVal = phoneVal.replace(/[^\d]/g,"").trim();  //убираем все нечисла
       phoneMasked.setValue(phoneVal.substring(phoneVal.length, (phoneVal.length-10))); // устанавливаем значение без первой 7
}
ajax
//php 
CJSCore::Init(array('ajax'));
//js
var postData = {               
  'sessid': BX.bitrix_sessid(),
  'site_id': BX.message('SITE_ID'),
  'action': 'add',
  'id': offersId,
  'quantity': 1,
};
BX.ajax({
   url: '/ajax/file.php',
   method: 'POST',
   data: postData,
   dataType: 'json',
   onsuccess: function(result){      
      
   },
   onfailure: function(result){
      
   } 
});
//file.php

define("STOP_STATISTICS", true);
if (array_key_exists('site_id', $_REQUEST) && is_string($_REQUEST['site_id'])){
   $siteId = $_REQUEST['site_id'];
   if($siteId !== '' && preg_match('/^[a-z0-9_]{2}$/i', $siteId) === 1){
      define('SITE_ID', $siteId);
   }
}

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

//подключаем нужные модули
use Bitrix\Main\Loader,
   Bitrix\Main\Application,
   Bitrix\Currency,
   Bitrix\Sale\DiscountCouponsManager;

Loader::includeModule('iblock');
Loader::includeModule('sale');
Loader::includeModule('catalog');
CUtil::JSPostUnescape();

if (!check_bitrix_sessid() || $_SERVER["REQUEST_METHOD"] != "POST") return;

$arRes = array();

if (isset($_POST["action"]) && strlen($_POST["action"]) > 0){
   $arRes = 'hello world';
}
$APPLICATION->RestartBuffer();
header('Content-Type: application/json; charset='.LANG_CHARSET);   
echo CUtil::PhpToJSObject($arRes);
die();
чтобы пересчиталась корзина, например, после добавления товара
 BX.onCustomEvent('OnBasketChange');