jquery keypress()事件获取文本

时间:2009-09-11 15:16:22

标签: jquery textbox keypress

我希望在文本框上发生按键时运行一个函数,所以我有这个代码:

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

这工作正常,但在我的功能中,我想根据文本框中的文本值做一些事情

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

现在的问题是它落后于一个键,所以如果我的文本框中显示'他'并且我输入'l',那么我希望我的textValue为'Hel',但它返回的是先前的值“他”因为大概该角色还没有放在文本框中。

有没有办法让'Hel'脱离我的功能?

谢谢:)

4 个答案:

答案 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);
});