Не работает изменение количества в ajax корзине

При загрузке корзины minishop2 4.1.5-pl с ванильными скриптами, через AjaxSnippet или quickview, не работает изменение количества ±.
Т.е скрипт не отрабатывает на появившихся после загрузки страницы элементах. Подскажите, как исправить?
Артем
06 мая 2023, 23:53
modx.pro
620
0

Комментарии: 16

Артур Шевченко
07 мая 2023, 10:35
+1
На событие открытия модального окна надо запускать вот такой код
modal.querySelectorAll('input[name=count]')?.forEach(el => {
     new CustomInputNumber(el, {});          
});
modal — это узел DOM внутри которого находится форма с товаром.
    Артем
    07 мая 2023, 22:38
    0
    в консоль пишет ошибку
    index.html:243 Uncaught ReferenceError: CustomInputNumber is not defined
    все скрипты подключены
      Артур Шевченко
      07 мая 2023, 23:21
      +1
      А вы импортировали класс CustomInputNumber?
        Артем
        07 мая 2023, 23:45
        0
        Мб не совсем корректно понимаю вопрос, но mscart.class.js начинается с
        import CustomInputNumber from './custominputnumber.class.js'
        На этой же странице, где вызываю через ajax modal с корзиной, в качестве эксперимента есть еще одна корзина, которая загружается изначально вместе со страницей. В ней все работает.
          Артур Шевченко
          08 мая 2023, 00:04
          +1
          Всё правильно, но импорт происходит в класс корзины, ваш скрипт-то не знает о том, где лежит CustomInputNumber и что это за зверь, глобально-то он не определен.
            Артем
            08 мая 2023, 00:17
            0
            Так, пытаюсь разобраться: мой скрипт расположен на странице (не отдельным файлом, а в html) где прописано подключение к
            <script src="/assets/components/minishop2/js/web/vanilajs/modules/mscart.class.js"></script>
            в котором первой строчкой импортируется класс CustomInputNumber
            И мой скрипт его не видит, а что нужно сделать что бы увидел?
              Александр Мельник
              08 мая 2023, 08:19
              +1
              Не вникал конкретно в вашу ситуацию, но раз вы используете импорты, то необходимо добаввлять атрибут type=«module» у тега script.
              Консоль в браузере обязательно должна была вам об этом сообщить.
                Артем
                08 мая 2023, 11:14
                0
                Принудительно добавляю на страницу custominputnumber.class.js с атрибутом type=«module»
                Артур Шевченко
                08 мая 2023, 11:08
                +1
                <script type="module">
                import CustomInputNumber from './assets/components/minishop2/js/web/vanilajs/modules/custominputnumber.class.js';
                modal.querySelectorAll('input[name=count]')?.forEach(el => {
                     new CustomInputNumber(el, {});          
                });
                </script>
                Примерно так, я мог с путями ошибиться.
                  Артем
                  08 мая 2023, 11:22
                  0
                  Заработали кнопки +-, однако количество товара в корзине от их нажатия не меняется, меняется количество в count, но в корзине все по прежнему и уведомлений нет.
                    Артем
                    08 мая 2023, 11:35
                    0
                    а MsCart так же не надо подключать?
                    Артур Шевченко
                    08 мая 2023, 13:54
                    0
                    Вы корзину выводите в модалке?
                      Артем
                      08 мая 2023, 14:00
                      0
                      Да, но там div в который после открытия модального окна через AjaxSnippet загружается корзина начиная с div id=«msCart», каждое открытие это новый запрос в корзину
                        Артур Шевченко
                        08 мая 2023, 14:06
                        0
                        Ну тогда надо каждый раз заново инициализировать корзину.
                        Артем
                        08 мая 2023, 14:10
                        0
                        беда
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    16