@legacy_js

Поиск как на тостере, как?

Приветствую, сделал поиск как на тостере
function event_search(event) {
        let search_value = event.target.value;

        setTimeout(() => {
            axios.post(document.location.pathname, { search_value }, { headers })
                .then(function (res) {
                    console.log(res)
                    document.querySelector('#search').innerHTML = res.data
                })
                .catch(e => {
                    console.log(e)
                })
        },200)
    }
    btn_search.addEventListener('input', event_search, false);

но не могу понять как добиться что бы при быстром вводе текста не отправлялся запрос на каждую клавишу. В нетворке у тостера отправляется только один запрос, с текстом, а у меня на каждое нажатие клавиши. Пробовал разные события, помогите пожалуйста
  • Вопрос задан
  • 391 просмотр
Решения вопроса 3
y0u
@y0u Куратор тега JavaScript
dev
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
let tm;

function event_search(event) {
    let search_value = event.target.value;

    clearTimeout(tm);
    tm = setTimeout(() => {
        axios.post(document.location.pathname, { search_value }, { headers })
            .then(function (res) {
                console.log(res)
                document.querySelector('#search').innerHTML = res.data
            })
            .catch(e => {
                console.log(e)
            })
    },200)
}
Ответ написан
@bqio
https://bqio.github.io/
let inputListener;
let ms = 1500;
input.addEventListener('keyup', () => {
 clearTimeout(inputListener);
 inputListener = setTimeout(() => {
   // ajax
 }, ms);
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы