Задать вопрос
@lb-web

Как сравнить предыдущее значение input с новым?

Есть input, в котором вводятся значения, которые потом идут в get запрос. Работает все по событию keyUp, что соотв. приводит к некоторым вещам, типа нажатие стрелочек, шифта и так далее - каждый раз срабатывание. Сама функция такая
function myFunction() {
        let jh = document.getElementById("search");
        let keyval = jh.value;
        if (keyval.length < 3) {
            document.getElementById("film-list").innerHTML = 'too short';
        } else {

 тут вызывается функция


        }
    }

Как быть в таком случае? Как сохранить предыдущее значение(?) и сравнить его с новым?
  • Вопрос задан
  • 899 просмотров
Подписаться 1 Средний 4 комментария
Пригласить эксперта
Ответы на вопрос 2
Тут вроде как две проблемы:
* Не подходящий обработчик keyup, который срабатывает на любую клавишу.
* Сохранение текущего значение инпута
Обработчик keyup:
Я бы заменил его хотя бы на keypress, который вызывается после keydown, при нажатии на символьную клавишу, что уже избавляет от лишних вызовов на такие клавиши как shift и прочее.
Сохранение текущего значения input:
В данном контексте имеет смысл сохранять значение в переменную за функцией MyFunction, и менять ее значение при вызовах обработчика.
Возможная проблема:
* Частый вызов get запроса:
В имеющемся теле кода в обработчике возможно присутствует запросик, который вероятно будет вызываться очень часто. Можно завести таймаут выполнения, который положим в так же за функцию myFunction, и будем прерывать если обработчик вызывается слишком часто.
Ответ написан
Комментировать
@alexhovansky
Сохранять старое значение в какой-то переменной. Я бы возвращал в myFunction значение инпута, сохранял бы его, ну а дальше уже всё от контекста зависит. В целом тяжело какой-то имеющий смысл код написать, не зная контекста.
Ответ написан
Ваш ответ на вопрос

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

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