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

Как избежать одновременного зажатия двух кнопок мыши?

Есть счётчик и при зажатии кнопки мыши значение увеличивается, когда отпускаешь значение останавливается, но когда зажимаешь сразу 2 кнопки, события происходят одновременно и значение растут в двое быстрее. И когда отпускаешь кнопку увеличение счётчика не останавливается. Как сделать, чтобы 2 зажатые клавиши обрабатывались как одна зажатая клавиша мыши?

$(this.$el).find('.jplus-setting-vue').mousedown(function() {
                        theInterval = setInterval(function() {
                            vm.crowdfunding.goal =
                                (parseFloat(vm.crowdfunding.goal) ?parseFloat(vm.crowdfunding.goal):0) + addVelocity;
                            counter++;
                            if (addVelocity < 25) {
                                addVelocity++;
                            }

                        }, 400);
                    });
                    $(this.$el).find('.jplus-setting-vue').mouseup(function() {
                        window.clearInterval(theInterval);
                        if (counter === 0) {
                            vm.crowdfunding.goal++; 
                        }
                        counter = 0;
                        addVelocity = 1;
                    });
  • Вопрос задан
  • 145 просмотров
Подписаться 1 Простой Комментировать
Решение пользователя Nikita Dergachov К ответам на вопрос (2)
@vanillathunder Автор вопроса
Исправил. Добавил проверку, чтобы только один интервал.

var theInterval = null;
                    $(this.$el).find('.jplus-setting-vue').mousedown(function() {
                        if(theInterval === null){
                            theInterval = setInterval(function() {
                                vm.crowdfunding.goal =
                                    (parseFloat(vm.crowdfunding.goal) ?parseFloat(vm.crowdfunding.goal):0) + addVelocity;
                                counter++;
                                if (addVelocity < 25) {
                                    addVelocity++;
                                }

                            }, 400);
                        }
                    });

                    $(this.$el).find('.jplus-setting-vue').mouseup(function() {
                        window.clearInterval(theInterval);
                        if (counter === 0) {
                            vm.crowdfunding.goal++; // it was just click
                        }
                        counter = 0;
                        addVelocity = 1;
                        theInterval = null;
                    });
Ответ написан
Комментировать