web-dev-qa-db-ja.com

jquery keypress()イベントはテキストを取得します

テキストボックスでキーが押されたときに関数を実行したいので、次のコードがあります。

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

これはうまく機能していますが、私の機能では、テキストボックスのテキスト値に基づいて何かをしたいです

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

ここでの問題は、キーが遅れているため、テキストボックスに「He」と入力して「l」と入力した場合、textValueを「Hel」にしたいのですが、前の値「He」を返していることですおそらく、その文字はまだテキストボックスに入れられていないからです。

ここで私の機能から「Hel」を取得する方法はありますか?

ありがとう:)

Keyupイベントを使用してみてください:

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

他の理由でキープレスを使用して立ち往生している場合(したがって、提案どおりにキーアップに変更することはできません)、最後の文字を次のように入力できます:

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

});
27

onkeyupを使用すると、正しい値が表示されます。

9
zzandy

遅延なしでsetTimeoutを使用します。 keypressイベントが完了するとすぐに実行されるため、入力の正しい値が得られます。

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