Как вывести сообщение после добавления товара в корзину? (javascript callback функции)



  • Объясните как ими пользоваться (слаб в javascript).

    SHKfillCartCallback(form) - подана команда на добавление товара в корзину;
    SHKemptyCartCallback() - подана команда на очистку корзины;
    SHKloadCartCallback() - корзина загружена / обновлена;
    SHKtoCartCallback(form) - подана команда отправить товар в корзину;
    SHKrecountItemCallback(count,el) - подана команда пересчитать кол-во товара в корзине.

    Использую SHKloadCartCallback() примерно в таком виде:
    <script>
    function SHKloadCartCallback(){
    $("div.slide").animate({right:'0px'},500);
    }
    </script>
    Тут вроде все понятно и работает даже в неумелых руках. При обновлении\загрузке выдвигается корзина. Проблема в открытии сразу при загрузке страницы, если можно что-то дописать это решило бы проблему.

    SHKtoCartCallback(form) - тут теряюсь. Интуитивно понятно что нужно передать айди товара или что-то подобное.
    <script>
    function SHKtoCartCallback(form){
    $("div.slide_panel").animate({right:'0px'},500);
    }
    </script>
    Происходит то что и нужно - корзина выдвигается при нажатии на кнопку "добавить в корзину", но не происходит добавления. Видимо я таким вызовом переписываю функцию добавления или не понятно что именно добавляю.
    Буду очень признателен если кто-то разъяснит.



  • function SHKtoCartCallback(){
    SHK.fillCart(id,count);
    $("div.slide_panel").animate({right:'0px'},500);
    }

    теперь добавляется товар, но страница перезагружается.

    Не понятен этот момент: SHKtoCartCallback(form) форм в скобочках не трогать или что-то нужно указать?



  • SHK.fillCart(id,count[,refresh])
    видимо третьим параметром можно написать что-то вроде false\norefresh\0
    но что?



  • function SHKtoCartCallback(thisForm){
    SHK.fillCart(thisForm);
    $("div.slide_panel").animate({right:'0px'},500);
    }
    Так добавляются товары, но не работает это $("div.slide_panel").animate({right:'0px'},500);


  • Администраторы

    SHK.fillCart(thisForm);

    Зачем вам это? Добавление товара должно происходить без этого, если вы всё настроили верно.

    Если используете SHKtoCartCallback(), то в конце надо добавить return true;.

    function SHKtoCartCallback(form){
        $("div.slide_panel").animate({right:'0px'},500);
        return true;
    }
    


  • спасибо за ответ. Вроде бы понял в чем дело. Анимация начинает срабатывать, но элемент "перересовывается" поэтому корзина не успевает всплыть. Можно ли привязать сообщение о добавлении товара (в данном случае $("div.slide_panel").animate({right:'0px'},500);) к какому-то событию когда корзина уже все пересчитала и зафиксировалась?


  • Администраторы

    Можно ли привязать сообщение о добавлении товара (в данном случае $("div.slide_panel").animate({right:'0px'},500);) к какому-то событию когда корзина уже все пересчитала и зафиксировалась?

    Вот событие:

    SHKloadCartCallback() - корзина загружена / обновлена;

    Чтобы сообщение появлялось только после добавления товара, можно создавать глобальную переменную, например так:

    function SHKtoCartCallback(form){
        $("div.slide_panel").animate({right:'0px'},500);
        window.shkIsProductAddStarted = true;
        return true;
    }
    
    function SHKloadCartCallback){
        if(window.shkIsProductAddStarted){
            alert('Товар успешно добавлен в корзину');
            window.shkIsProductAddStarted = false;
        }
    }
    


  • огромное спасибо!

    Вот что было нужно:

    <script>
    function SHKtoCartCallback(form){
        window.shkIsProductAddStarted = true;
        return true;
    }
    
    function SHKloadCartCallback(){
        if(window.shkIsProductAddStarted){
            $("div.slide_panel").animate({right:'0px'},500);
            window.shkIsProductAddStarted = false;
        }
    }
    </script>
    


Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.