@VadimRublev
Go, front-end (ванильный).

Как не пропускать событие во время выполнения с задержкой?

Сверяю значения в двух полях при вводе (типа пароли).
И сверку делаю при равной длине значений, с задержкой. Т. е. разная длина = сообщение о некорректности.
Но, при быстром наборе - лишний (сверх равнодлинного значения) символ вводится во время выполнения сверки - сверка заканчивается уже после набора лишнего символа. В итоге [должного] сообщения о некорректности нет, а есть сообщение о результате проверки (которого быть не должно).
Получается, что не ловит событие нажатия клавиши во время выполнения_с_задержкой предыдущего события.
Как гарантированно ловить здесь ВСЕ события?
function ValueNew() {   // Функция вызвана нажатием клавиши.
    if (valNew.length === valNewRec.length) {   // При значениях равной длины...
	setTimeout(function() {
		// Здесь сверка значений. И сообщение "равно" / "не равно".
        }, 1100);
    } else {   // При значениях разной длины...
        // Сообщение о некорректности.
    }
}
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ответы на вопрос 2
hzzzzl
@hzzzzl
зачем таймаут для этого?

https://jsfiddle.net/9um3jxq0/

Ответ написан
w13vitaliy
@w13vitaliy
self-taught developer since 2020
Зачем делать какую нибудь задержку и ты можешь отключать ввод данных при проверке
это перед setTimeout
function someFunc() return false;
твое поле ввода.removeEventListener(твой код который добавляет);
твое поле ввода.addEventListener("keypress", someFunc);
в проверке в конце добавляешь обработчик и удаляешь
твое поле ввода.addEventListener(твой код который добавляет);
твое поле ввода.removeEventListener("keypress", someFunc);
Ответ написан
Ваш ответ на вопрос

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

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