Ответ 1
Вы можете попробовать использовать событие keyup:
$(selector).keyup(function() {
var textValue = $(this).val();
DoX();
});
Я хочу, чтобы функция запускалась при нажатии клавиши в текстовом поле, поэтому у меня есть этот код:
$("input[x]").keypress(function() {
DoX();
})
Это работает нормально, но в моей функции я хочу сделать что-то на основе текстового значения в текстовом поле
var textValue = ("input[x]").val();
Теперь проблема заключается в том, что она отстает от ключа, поэтому, если в текстовом поле указано "Он", и я набираю "l", тогда я хочу, чтобы мой textValue был "Hel", но он возвращает предыдущее значение "Он", потому что предположительно, символ еще не помещен в текстовое поле.
Есть ли способ получить "Hel" из моей функции здесь?
Спасибо:)
Вы можете попробовать использовать событие keyup:
$(selector).keyup(function() {
var textValue = $(this).val();
DoX();
});
если вы застряли, нажав клавишу по какой-либо другой причине (так что вы не можете перейти на клавиатуру, как было предложено), вы можете получить последний символ, напечатанный следующим образом:
$("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
});
Используйте onkeyup
, он отобразит правильное значение.
Используйте setTimeout без задержки. Он будет запущен сразу после завершения события нажатия клавиш, поэтому вы получите правильное значение ввода.
$("input[x]").keypress(function() {
setTimeout(DoX);
});