Событие jquery вызывается один раз для каждого открытия модала - PullRequest
0 голосов
/ 05 января 2019

У меня есть модальная форма начальной загрузки, которая содержит список отслеживаемых элементов. Существует флажок все, который выбирает / отменяет выбор всех элементов в списке, если установлен флажок. Функция jquery вызывается один раз для каждого показа модального режима, который я не понимаю. Откройте модал в первый раз, вызывается функция jquery. Откройте модал во второй раз, функция jquery вызывается дважды. Откройте модал в третий раз, функция jquery вызывается три раза. И так далее. Почему эта функция-флажок вызывается один раз при каждом открытии модального окна? JQuery помещает вещи в какой-нибудь стек? То, что я хочу сделать, это выдать предупреждение, если пользователь выбирает все элементы для проверки. Но я не хочу, чтобы он / она получал несколько предупреждений. Код ниже:

$('#realTimeModal').on('show.bs.modal', function (e) {
  var modal = $(this)
  console.log('controller-1253: realTimeModal handler');

  //first, clear out any previous layers
  clearLayers();
  console.log('show_realtime, updatePositions: ', updatePositions );
  clearInterval(updatePositions);

  /*
   * Check to see if the 'Toggle All' checkbox is checked. If so
   * either select all checkboxes or deselect them.
   */

  $("#check_rt").change(function () {
    console.log('==================================');
    console.log('=====     in #check_rt   =========');
    console.log('==================================');
    var checked = $(this).prop('checked');
    if (checked == true) {
      $.each($("input[class='form-check-input callSign_checkbox-rt']"), function () {
        $(this).prop('checked', true);
      });
      trackAll = 'true';
    } 
    else {
      $.each($("input[class='form-check-input callSign_checkbox-rt']"), function () {
        $(this).prop('checked', false);
      });
      trackAll = 'false';
    }
    //if ( trackAll == 'true' )
      //alert('If you select all aircraft, breadcrumbs will not be displayed.');
  }); 
}) // $('#realTimeModal').on('show.....)

То, что я хочу сделать, - это просто открыть предупреждение, если пользователь установит флажок «Выбрать все». Но я хочу только одно предупреждение, а не столько предупреждений, сколько раз было открыто модальное окно. Я скучаю по чему-то фундаментальному для jquery здесь?

Спасибо .....

1 Ответ

0 голосов
/ 05 января 2019

Вы добавляете обработчик событий каждый раз, когда модальное окно открывается.

Функция -

$("#check_rt").change(function () { ... }

определяется внутри -

$('#realTimeModal').on('show.bs.modal', function (e) { ... }

Это не должно быть так. Вы должны вызвать $("#check_rt").change() вне вызова функции модального шоу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...