-3

私はこれを持っています:

<input type="text" ID="txtMy" name="txtMy" onkeypress="initialize();"/>

そして、私の .js ファイルには次のものがあります。

initialize()
{
    var x = $("#txtMy").val();
}

しかし、テキスト ボックスに '2' があり、4 を入力しても、x の値は 2 のままです。これを解決するにはどうすればよいですか?

4

5 に答える 5

1

keydownおよびkeypressイベントは両方とも、入力されたキーが実際にテキスト ボックスに表示される前に実行されます。キーが現れた後に入力の新しい値を取得したい場合は、keyup代わりにイベントを使用してください。

<input type="text" ID="txtMy" name="txtMy" onkeyup="initialize();"/>

initialize()
{
    var x = $("#txtMy").val();
}

とにかくライブラリを使用しているため、.on()を使用して JavaScript でイベント ハンドラーをバインドすることを検討する必要があります。ロジック (javascript) をビュー (html) から分離しておくことは、良い習慣です。

于 2012-04-18T17:05:50.767 に答える
1

onkeypress の initialize のスペルが宣言 ( inititalize) と一致しません。

于 2012-04-18T16:58:51.167 に答える
1

使用するkeyup

目立たない方法でそれを行う方法を次に示します。

HTML

<input type="text" id="txtMy" />

脚本

$(function(){
  $("#txtMy").keyup(function (event) {
    alert($(this).val())
  });
});

作業サンプル: http://jsfiddle.net/VmELF/4/

dom の読み込み後に DOM に挿入されるテキスト ボックスに機能をバインドする場合 (Ajax 呼び出しなどで可能)、jQueryを使用できます。

$(function(){
  $("body").on("keyup","#txtSearchKey",function (event) {
    alert($(this).val())
  });
});
于 2012-04-18T16:59:49.337 に答える
0

いくつかのこと:

  1. イベントを使用しkeyupます。keypressキャラクターが録音される前に発砲しています。
  2. initialize()関数のスペルがHTMLスニペットで間違っています。

http://jsfiddle.net/8XTLW/1/で動作中のjsfiddleを参照してください

于 2012-04-18T17:03:22.227 に答える
0

マークアップ イベント ハンドラの代わりに、jquery を使用できます。

var x;

$("#txtMy").on("keyup", function(){
     x = $(this).val();
     alert(x);
})
于 2012-04-18T17:00:05.660 に答える