Есть input для указания количества покупаемого товара и рядом "стрелки" вверх/вниз для изменения его значения:
<div class="product_count">
<input type="text" value="1">
<div class="product_count_top"></div>
<div class="product_count_bottom"></div>
</div>
После клика по стрелке срабатывает trigger("change") c задержкой в 1 секунду.
$(".product_count_top").click(function() {
var input = $(this).prevAll('input');
var inputVal = Number.parseInt(input.val());
if (inputVal>0) {
var timeout;
inputVal++;
input.val(inputVal);
timeout = setTimeout(function () {
input.trigger("change");
}, 1000);
} else {
input.val("1");
}
});
Код работает правильно, но не так как я хочу. Помогите его модифицировать, чтобы при множестве кликах (в течение секунды), триггер срабатывал только 1 раз - через секунду после последнего клика.
Вот что вам нужно:
var timeout = null;
$(".product_count_top").click(function() {
var input = $(this).prevAll('input');
var inputVal = Number.parseInt(input.val());
if (inputVal>0) {
inputVal++;
input.val(inputVal);
clearTimeout(timeout);
timeout = setTimeout(function () {
input.trigger("change");
}, 1000);
} else {
input.val("1");
}
});
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости