Задать вопрос

Как обновлять значения корзины после остановки (с задержкой) изменения кол-во товаров по кнопкам?

Сайт на Wordpress + Woocommerce

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

jQuery( function( $ ) {
	$( 'body' ).on( 'change', '.qty', function() { // поле с количеством имеет класс .qty
		 setTimeout(function() { 
                    $( '[name="update_cart"]' ).trigger( 'click' );
                }, 1300 );
	} );
	
		$( 'body' ).on( 'click', '.quantity-button.inc, .quantity-button.dec', function() { // элементы инкремента/декремента 
		 setTimeout(function() { 
                    $( '[name="update_cart"]' ).trigger( 'click' );
                }, 1300 );
	} );
} );


С момент когда человек нажимает на кнопку изменения количества, есть задержка 1300 м/сек. Но хотелось бы улучшить этот код и сделать так, чтобы задержка обновлялась при каждом нажатии на кнопку.

Т.е. сейчас человек может добавлять в корзине продукт на кнопку "+" и через 1300 м/сек она в любом случае обновится.
А надо прейти к тому, чтобы пока человек нажимает на эту кнопку, таймаут каждый раз обновлялся пока он не остановится:)
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Sing303
Что-то такое?
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
<script>
  jQuery(function($) {
    var updateCart = _.debounce(function() {
      $('[name="update_cart"]').trigger('click');
    }, 1300);

    $('body').on('change', '.qty', function() {
      updateCart();
    });

    $('body').on('click', '.quantity-button.inc, .quantity-button.dec', function() {
      updateCart();
    });
  });
</script>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽