Цитата |
---|
Алексей написал: Михаил, добрый день. Очень полезная функция. Но кнопки с выбранными параметрами появляются и сразу исчезают, если включен режим Ajax в каталоге. Если Ajax выключить, то кнопки не исчезают, но и не отрабатывают на удаление. |
Для того, чтобы работало без включенного ajax, можно немного изменить логику и работать с параметрами url, которые передает фильтр. Но для этого надо немного доработать шаблон самого умного фильтра. Там, где идет foreach с чекбоксами, в тег input надо добавить заполнение дата-атрибута data-url:
Код |
---|
data-url="<?= $ar['URL_ID']; ?>
|
После этого можно изменить функцию
removeCheckboxAndClickSubmit из кода, который приводил Михаил
Код |
---|
function removeCheckboxAndClickSubmit(button) {
button.remove();
const url = new URL(window.location).toString();
const itemUrl = button.getAttribute('data-url');
let newUrl;
if (url.includes(`-${itemUrl}-or`)) {
newUrl = url.replace(`-${itemUrl}-or`, '');
} else {
if (url.includes(`-or-${itemUrl}`)) {
newUrl = url.replace(`-or-${itemUrl}`, '');
}
else {
newUrl = url.replace(`-${itemUrl}`, '');
}
}
window.location.replace(newUrl);
} |
Этот код теперь становится нам не нужен, его можно просто удалить или закомментировать:
Код |
---|
checkboxes.forEach((checkbox) => { checkbox.addEventListener('change', function () {
const buttonId = this.id;
const existingButton = checkedItemsContainer.querySelector(`#${buttonId}`);
if (this.checked) {
if (!existingButton) {
const button = document.createElement('button');
button.id = buttonId;
button.textContent = this.nextElementSibling.querySelector('span').textContent;
checkedItemsContainer.appendChild(button);
}
} else {
if (existingButton) {
existingButton.remove();
}
}
});
}); |