Подтвердить что ты не робот

Jquery keypress() событие получить текст

Я хочу, чтобы функция запускалась при нажатии клавиши в текстовом поле, поэтому у меня есть этот код:

$("input[x]").keypress(function() {
        DoX();
    })

Это работает нормально, но в моей функции я хочу сделать что-то на основе текстового значения в текстовом поле

var textValue = ("input[x]").val();

Теперь проблема заключается в том, что она отстает от ключа, поэтому, если в текстовом поле указано "Он", и я набираю "l", тогда я хочу, чтобы мой textValue был "Hel", но он возвращает предыдущее значение "Он", потому что предположительно, символ еще не помещен в текстовое поле.

Есть ли способ получить "Hel" из моей функции здесь?

Спасибо:)

4b9b3361

Ответ 1

Вы можете попробовать использовать событие keyup:

$(selector).keyup(function() {
  var textValue = $(this).val();
  DoX();
});

Ответ 2

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

$("input[x]").keypress(function (e) {
    var c = String.fromCharCode(e.which);
    //process the single character or
    var textValue = $("input[x]").val();
    var fulltext = textValue + c;
    //process the full text

});

Ответ 3

Используйте onkeyup, он отобразит правильное значение.

Ответ 4

Используйте setTimeout без задержки. Он будет запущен сразу после завершения события нажатия клавиш, поэтому вы получите правильное значение ввода.

$("input[x]").keypress(function() {
  setTimeout(DoX);
});