IvanRu08

Выполнить обработчик один раз

Рекомендованные сообщения

Друзья, всем привет. Стоит вроде тривиальная задача, но решить не могу. Есть форма поиска. Скрипт должен отследить когда пользователь начнет там что-то вводить. Сработать это должно только один раз. То есть при последующем изменении значения поля ничего делать не нужно. НО! Как только на форму поиска опять кликнули, события должно сработать еще один раз. И так далее.

Попробовал вот так вот, но срабатывает при каждом новом символе:

jQuery(function () {
    var search_flag = false;

    if (!search_flag) {

        $('.input_search').on('input', function () {
            
			let elem = $(this).val();
            alert(elem);            

        });

        search_flag = true;

    }
});

Как сделать, чтобы срабатывало каждый раз, когда поле в фокусе - вообще ума не приложу. Товарищи, буду благодарен за любые мысли в этом направлении. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В Алерт будет попадать текст, который находится в форме, при каждом вводе символа? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, DivMan сказал:

В Алерт будет попадать текст, который находится в форме, при каждом вводе символа? 

Это я просто проверку сделал. Сейчас именно при каждом вводе символа алерт срабатывает. А нужно, чтобы срабатывал один раз. Причем когда форма теряет фокус и опять получается фокус - алерт должен сработать еще раз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
let isFirstInputEvent = true;
let valueLength = 0;

const input = document.querySelector('input');

function callback(value) {
  console.log(value);
}

input.addEventListener('input', function() {
  let newValueLength = this.value.length;
  if (valueLength !== newValueLength && isFirstInputEvent) {
    callback('First input event');
    isFirstInputEvent = false;
  }
});

input.addEventListener('blur', function() {
  valueLength = this.value.length;
  isFirstInputEvent = true;
});

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

Не пропустите! Сэкономьте до 90% на лучших курсах 2018 года.