@DTHRT

Как на чистом JS отслеживать сразу 4 инпута?

623b13f15ce30652663205.png

Есть форма в которой можно указать опыт работы. Я создал <input type="hidden">, в который хочу каждый раз после изменения выделенных красным цветом инпутов - подставлять итоговое количество лет, типо сколько человек проработал в итоге в этой компании (пример: 1 год, 5 месяцев). Саму функцию я уже написал - она работает. Принимает на входе 2 даты, формата ГОД МЕСЯЦ УСТРОЙСТВА и ГОД МЕСЯЦ УВОЛЬНЕНИЯ (пример: 2015 10, 2018 01 ). Сейчас стоит задача в том, чтобы отслеживать эти 4 выделенных инпута, как-то передавать в мою функцию параметры (годы и месяцы) и затем каждый раз обновлять мой скрытый инпут (по событию change) новым значением из моей функции (она возвращает строку).

В принципе я вижу только одно решение сейчас - накинуть на все эти 4 инпута клик с этой функцией и потом результат функции как-то запихивать в мой скрытый инпут. Однако не хочется "г#внокодить", уверен, что есть более изящные решения.

P.S. Проект на чистом JS и не подразумевает использование сторонних фреймворков типо React и Vue. Нужно решение на чистом JS.
  • Вопрос задан
  • 240 просмотров
Решения вопроса 1
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
document.querySelectorAll('form select').forEach(function () {
    this.addEventListener('change', function () {
          // обновить статус
    });
});

учи работу с событиями и dom
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sinneren
@sinneren
или #1
метод onChange на каждый инпут, где проверять тип инпута и запускать соответствующий метод обработчик, а в конце метод для хидден поля
или #2 отдельный метод обработчик onChange на каждый инпут, в конце него эмиттить событие new Event('eventName') и отслеживать на document этот эвент, в нем запускать ваш метод для хидден поля
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы