Bitrix

Подгрузка jquery в компоненте bitrix:sale.order.ajax

Компонент bitrix:sale.order.ajax отвечает за отображение страницы оформления товара, которая управляется через ajax. Т.е. все запросы платежных систем, способов доставки и прочего погружается без обновления всей страницы, а обновляется только часть страницы, которая занята этим компонентом.

Компонент очень удобен и в большинстве случаев используют именно его. Однако, возникают сложности с шаблоном этого компонента, когда требуется, чтобы jquery-скрипты работали внутри компонента, например это может быть плагин jquery, который стилизует определенным образом чекбоксы и текстовые поля или плагин, который задает маску ввода телефона, email.Проблема состоит в том, что при перезагрузке компонента не происходит перезагрузки библиотеки jquery и код javascript, который требует загруженной библиотеки jquery просто выдает ошибки и, соответственно, чекбоксы не стилизуются и маски ввода телефона не задаются.

Но есть простой методой загрузки библиотеки jquery — он такой:

 

function include( filename ) {
var js = document.createElement(‘script’);
js.setAttribute(‘type’, ‘text/javascript’);
js.setAttribute(‘src’, filename);
js.setAttribute(‘defer’, ‘defer’);
document.getElementsByTagName(‘HEAD’)[0].appendChild(js);

// save include state for reference by include_once
var cur_file = {};
cur_file[window.location.href] = 1;

if (!window.php_js) window.php_js = {};
if (!window.php_js.includes) window.php_js.includes = cur_file;
if (!window.php_js.includes[filename]) {
window.php_js.includes[filename] = 1;
} else {
window.php_js.includes[filename]++;
}

return window.php_js.includes[filename];
}

BX.addCustomEvent(‘onAjaxSuccess’, afterFormReload);
function afterFormReload(){
include(‘http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js’);
}

 

Этот код следует разместить в файле template.php шаблона компонента bitrix:sale.order.ajax .

В этом коде задана функция include, которая является неким аналогом функции include из PHP. Эта функция позволяет загружать файл javascript.
Также в коде определен обработчик для события onAjaxSuccess Битрикса, в котором происходит загрузка библиотеки jquery с помощью функции include.

Отставить комментарий

Ваш электронный адрес не будет опубликован.Обязательные для заполнения поля отмечены *

семь + 5 =