我希望在文本框上发生按键时运行一个函数,所以我有这个代码:
$("input[x]").keypress(function() {
DoX();
})
这工作正常,但在我的功能中,我想根据文本框中的文本值做一些事情
var textValue = ("input[x]").val();
现在的问题是它落后于一个键,所以如果我的文本框中显示'他'并且我输入'l',那么我希望我的textValue为'Hel',但它返回的是先前的值“他”因为大概该角色还没有放在文本框中。
有没有办法让'Hel'脱离我的功能?
谢谢:)
答案 0 :(得分:55)
您可以尝试使用keyup事件:
$(selector).keyup(function() {
var textValue = $(this).val();
DoX();
});
答案 1 :(得分:27)
如果由于某些其他原因而无法使用keypressed(因此您无法按照建议更改为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
});
答案 2 :(得分:9)
使用onkeyup
,它会显示正确的值。
答案 3 :(得分:0)
使用setTimeout没有延迟。它会在按键事件完成后立即运行,因此您将获得正确的输入值。
$("input[x]").keypress(function() {
setTimeout(DoX);
});