Событие jquery keypress () получить текст - PullRequest
28 голосов
/ 11 сентября 2009

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

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

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

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

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

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

Спасибо:)

Ответы [ 4 ]

55 голосов
/ 11 сентября 2009

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

$(selector).keyup(function() {
  var textValue = $(this).val();
  DoX();
});
27 голосов
/ 11 сентября 2009

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

$("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

});
9 голосов
/ 11 сентября 2009

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

0 голосов
/ 24 января 2015

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

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