Запустить функцию javascript, когда пользователь закончит ввод, а не при нажатии клавиши?

Возможно, без использования хэшей, посмотрите на asual jQuery Address plugin :

Пример здесь .

Обратите внимание, что он будет использовать хэши в IE, для этого нет обходного пути.

416
задан David Zorychta 18 November 2010 в 22:13
поделиться

3 ответа

Поздно ответьте, но я добавляю его, потому что это - 2019, и это - совершенно достижимое использование симпатичный ES6, никакие сторонние библиотеки, и я нахожу, что большинство очень расчетных ответов является большим и пригнуто со слишком многими переменными.

Изящное решение, взятое от это превосходное сообщение в блоге.

function debounce(callback, wait) {
  let timeout;
  return (...args) => {
      const context = this;
      clearTimeout(timeout);
      timeout = setTimeout(() => callback.apply(context, args), wait);
  };
}

window.addEventListener('keyup', debounce( () => {
    // code you would like to run 1000ms after the keyup event has stopped firing
    // further keyup events reset the timer, as expected
}, 1000))
1
ответ дан 22 November 2019 в 23:15
поделиться

Простой и легкий для понимания.

var mySearchTimeout;
$('#ctl00_mainContent_CaseSearch').keyup(function () {
   clearTimeout(mySearchTimeout);
   var filter = $(this).val();
   mySearchTimeout = setTimeout(function () { myAjaxCall(filter); }, 700);
   return true;
});
0
ответ дан 22 November 2019 в 23:15
поделиться

Для передающих параметров к Вашей функции наряду с синтаксисом ES6.

$(document).ready(() => {
    let timer = null;
     $('.classSelector').keydown(() => {
     clearTimeout(timer); 
     timer = setTimeout(() => foo('params'), 500);
  });
});

const foo = (params) => {
  console.log(`In foo ${params}`);
}
0
ответ дан 22 November 2019 в 23:15
поделиться
Другие вопросы по тегам:

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