Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Стилизованный input number (https://javascript.ru/forum/misc/85494-stilizovannyjj-input-number.html)

Ops 20.09.2023 01:17

Стилизованный input number
 
Есть стилизованный JS инпут, в рамках большого скрипта, пытаюсь сделать чтобы при событие нажатия на ЛКМ (onmousedown) он изменял значение, он изменяет, но естественно один раз, пробовал сделать через setinterval чтобы тело функции запускалось раз в 300мс, а на onmouseup поставить сброс, но почему то не работает.


$$('.up, .down', box).forEach((el)=>{
        el.onclick = ()=>{
          this.activatenumber(el);
          this.sumForm(form);
          form.dispatchEvent(new Event("change"));
        }
      });


Буду очень признателен за помощь с таким вариантом или советы как сделать по другому. Мне нужно чтобы при нажатие на стилизованную кнопку - значение поля увеличивалось или уменьшалось без необходимости каждый раз кликать (как это работает в браузере по дефолту).

рони 20.09.2023 01:59

Ops,
как вариант ...
let timer;
        $$('.up, .down', box).forEach((el) => {
            el.onmousedown = () => {
                window.clearInterval(timer);
                let tt = this;
                timer = window.setInterval(() => {
                    tt.activatenumber(el);
                    tt.sumForm(form);
                    form.dispatchEvent(new Event("change"));
                }, 350)

            };
            el.onmouseup = () => {
                window.clearInterval(timer);
            }
        });

Ops 20.09.2023 02:24

Работает, спасибо! Понял вы this поместили в переменную, поэтому не работало :)

Aetae 20.09.2023 13:49

Шо? Помещение this в переменную тут вообще ни к чему. А заработало оно потому что рони сделал именно то, что ты описан в вопросе. =\


Часовой пояс GMT +3, время: 15:47.