Как прервать функцию js?

Вопросы, не относящиеся ни к одному разделу

Как прервать функцию js?

Сообщение guyasyou » 15 сен 2013, 16:24 ,  »  Сообщение:#1

Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку

Делаю корзинку для товаров. Все ок, корзина пополняется, но есть один баг:
После нажатия кнопки Купить вылазит модальное окно, куда указывается количество покупаемого товара.
Если это окно закрыть, не откладывая товар в корзину, а потом купить другой товар, то и предыдущий товар отправится в корзину ((

Вот скрипт:
Код: Выделить всё
function addToCart(id) {
   if ($('#addtocart'+id).hasClass('disabled')) {
      $(this).preventDefault();
   } else {
      $('#cartInfo').html('<img src="/concrete/images/icons/icon_header_loading.gif">&nbsp;');
      $('#countModal').arcticmodal({
         afterOpen: function(data, el) {
            $('#itemkolsubmit').bind('click', function(event) {
               var kol = $('#itemkol').val();
               $.ajax({
                  type: "POST",
                  url: "/tools/cart",
                  data: "add=true&id="+id+"&kol="+kol,
                  success: function(msg){
                     //checkCart();
                     $('#countModal').arcticmodal('close');
                     $('#addtocart'+id).addClass('disabled').attr('disabled', true);
                     $('#addtocart'+id).attr('title', 'Товар в корзине');
                     $('#addtocart'+id).html('Отложен');
                  }
               });
            });
         },
         afterClose: function(data, el) {
            $('#itemkol').val('');
         }
      });
   }
}


Как будто в буфере остаются те незавершенные функции, и при нажатии общей кнопки все они выполняются

Работает корзина только у зареганных: логин test, пароль testtest
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 550
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Как прервать функцию js?

Сообщение guyasyou » 15 сен 2013, 16:48 ,  »  Сообщение:#2

Проблему решил путем разделения функций. Но все таки, возможно ли в данном варианте решить проблему?
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 550
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Как прервать функцию js?

Сообщение Count_Raven » 15 сен 2013, 20:33 ,  »  Сообщение:#3

guyasyou писал(а):Проблему решил путем разделения функций. Но все таки, возможно ли в данном варианте решить проблему?

Ну это смотря как хранить товар и какая последовательность действий.
Храним купленный товар в сессии?
Сделать надо обработчик закрытия модального диалога, я так думаю.
При этом еще можно не добавлять товар в корзину, пока покупатель не определился.
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

Re: Как прервать функцию js?

Сообщение guyasyou » 16 сен 2013, 12:58 ,  »  Сообщение:#4

При этом еще можно не добавлять товар в корзину, пока покупатель не определился.

так и есть, тоесть запрос отправляется только после нажатия кнопки на модальном окне, а модалька одна, и нажатие кнопки инициализирует и предыдущие товары.
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 550
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Как прервать функцию js?

Сообщение Count_Raven » 16 сен 2013, 13:17 ,  »  Сообщение:#5

guyasyou писал(а):
При этом еще можно не добавлять товар в корзину, пока покупатель не определился.

так и есть, тоесть запрос отправляется только после нажатия кнопки на модальном окне, а модалька одна, и нажатие кнопки инициализирует и предыдущие товары.

Тогда тут какая-то неверная архитектура, если происходят подобные вещи.
Товары не должны мешать друг-другу в данном вопросе.
Надо переделать архитектуру, где-то логика неверная.
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron