Javascript ключевые события, порядок выполнения - PullRequest
0 голосов
/ 21 февраля 2012

На моей веб-странице есть следующий код Javascript (с jQuery) - пользователь вводит текстовое поле, и приложение выполняет одно, если в поле есть значение, и другое, если поле пустое (потому что пользовательнажимал клавишу удаления или возврата).Код, который у меня есть, выглядит следующим образом:

$('input#textInput').keyup( function(event) {
    if($(this).val()) {
        console.log('non-empty string in the text field');
    }
    else {
        console.log('no text in the text field');
    }
}

Проблема в том, что похоже, что функция обратного вызова выполняется до появления символа в текстовом поле.Таким образом, если поле пустое, и я нажимаю клавишу «p», то, по-видимому, происходит генерирование событий keydown, keypress и keyup, выполняется функция обратного вызова keyup, и «нет текста в текстовом поле» регистрируется, изатем в текстовом поле появляется символ «p», а это не то, что мне нужно.

Кто-нибудь знает, как я могу выполнить обратный вызов любого из ключевых событий и получить доступ к значению, которое появится втекстовое поле?Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2016

Событие input должно делать примерно то, что вы хотите. Он срабатывает после изменения значения и поддерживается большинством современных браузеров.

https://developer.mozilla.org/en-US/docs/Web/Events/input

0 голосов
/ 21 февраля 2012

Вы можете установить время ожидания:

$('input').keyup(function() {
  var inp = this;
  setTimeout(function() {
    console.log(inp.value);
  }, 0);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...