срабатывает при изменении события, если значения нескольких входных элементов изменены в jQuery

#javascript #jquery #events

#javascript #jquery #Мероприятия

Вопрос:

У меня есть два элемента ввода файла. Я хочу, чтобы change событие срабатывало только в том случае, если событие происходит для обоих элементов.

Прямо сейчас событие запускается немедленно, если один из каждого получает файл

 $(function (){
  $(".main_input, .second__input").on("change", ()=>{
     // do stuff 
  });
});
  

Я попытался реализовать and оператор, но не знаю, как переписать его в синтаксис jQuery

 if ($(".main_input") amp;amp; $(".second__input")).on("change", ())
  

Ответ №1:

Событие изменения не зависает. Вам нужно будет посчитать

 $(function () {
      const events = []
      $(".main_input, .second_input").on("change", (e)=>{
         const tgt = e.target;
         const isMain = $(tgt).hasClass("main_input");
         const isSecond = $(tgt).hasClass("second_input");
         if (isMain) events.push("main")
         if (isSecond) events.push("second")
         console.log(events)
         if (events.length === 2) {
            console.log("both have been changed")
         }
      });
    });  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
#1 <input type="file" class="main_input"><br/>
#2 <input type="file" class="second_input"><br/>  

Комментарии:

1. ваше решение, похоже, не работает для меня, код не выдает никаких выходных данных, $(this).hasClass("second__input"); так или иначе, другой ввод возвращает false, даже если я могу выбрать класс на вкладке разработчика браузера

2. Я не заметил () =>, что означает, что мне нужно передать событие. См. Уведомление об обновлении, которое я изменил second__input на second_input