JQuery прослушивает несколько событий, но срабатывает только один раз - PullRequest
1 голос
/ 03 октября 2019

Как прослушивать несколько событий, таких как изменение и ввод, но запускать только одно за раз.

Пример:

  • При вводе: инициировать событие ввода без изменений
  • При изменении: событие смены огня без ввода

Использование этого кода для прослушивания событий, но при вводе это срабатывает дважды.

Демонстрация:

https://jsfiddle.net/h6sny738/2/

$(document).on("change input", '.test', function(event) {
  console.log("test");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<input class="test">

1 Ответ

2 голосов
/ 03 октября 2019

Назовите свою функцию и прикрепите разных слушателей с разными целями:

var myFunc = function(event) {
  console.log('test', event.type, event.target.tagName);
};

$(document)
  .on('change', 'select.test', myFunc)
  .on('input', 'input.test', myFunc);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<input class="test">
<select class="test">
  <option>1</option>
  <option>2</option>
</select>
...