テキストボックスでキーが押されたときに関数を実行したいので、次のコードがあります。
$("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();
});
他の理由でキープレスを使用して立ち往生している場合(したがって、提案どおりにキーアップに変更することはできません)、最後の文字を次のように入力できます:
$("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を使用します。 keypressイベントが完了するとすぐに実行されるため、入力の正しい値が得られます。
$("input[x]").keypress(function() {
setTimeout(DoX);
});