На данный вопрос уже ответили:
Есть функция которая должна вызывается по изменению текстового поля. Так как она отправляет ajax-запрос, не хотелось бы чтобы она срабатывала после каждого изменения текстового поля.
Как можно сделать так чтобы функция срабатывала только в том случае если изменения не происходили некоторое время?
Суть такова: при вводе запускаем таймер, при повторном вводе — перезапускаем. Если никто ничего долго не вводит, то таймер никто не перезапускает, и в конце концов он сработает (минимум через секунду в данном примере)
var input = document.getElementById('input');
var info = document.getElementById('info');
// Храним здесь ID таймера, чтобы отменять при вводе
var task = null;
input.addEventListener('input', function() {
info.textContent = 'Скоро сработает таймер';
// Если есть старый таймер, то отменяем его
if (task !== null) {
clearTimeout(task);
task = null;
}
// Запускаем новый таймер
task = setTimeout(someWork, 1000);
});
function someWork() {
task = null; // Таймер отработал, ID хранить больше не нужно
info.textContent = 'Введено: ' + input.value;
}
<input id="input" placeholder="Пиши в меня" />
<div id="info"></div>
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости