私はこれを持っています:
<input type="text" ID="txtMy" name="txtMy" onkeypress="initialize();"/>
そして、私の .js ファイルには次のものがあります。
initialize()
{
var x = $("#txtMy").val();
}
しかし、テキスト ボックスに '2' があり、4 を入力しても、x の値は 2 のままです。これを解決するにはどうすればよいですか?
私はこれを持っています:
<input type="text" ID="txtMy" name="txtMy" onkeypress="initialize();"/>
そして、私の .js ファイルには次のものがあります。
initialize()
{
var x = $("#txtMy").val();
}
しかし、テキスト ボックスに '2' があり、4 を入力しても、x の値は 2 のままです。これを解決するにはどうすればよいですか?
keydown
およびkeypress
イベントは両方とも、入力されたキーが実際にテキスト ボックスに表示される前に実行されます。キーが現れた後に入力の新しい値を取得したい場合は、keyup
代わりにイベントを使用してください。
<input type="text" ID="txtMy" name="txtMy" onkeyup="initialize();"/>
initialize()
{
var x = $("#txtMy").val();
}
とにかくライブラリを使用しているため、.on()を使用して JavaScript でイベント ハンドラーをバインドすることを検討する必要があります。ロジック (javascript) をビュー (html) から分離しておくことは、良い習慣です。
onkeypress の initialize のスペルが宣言 ( inititalize
) と一致しません。
使用する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())
});
});
いくつかのこと:
keyup
ます。keypress
キャラクターが録音される前に発砲しています。http://jsfiddle.net/8XTLW/1/で動作中のjsfiddleを参照してください
マークアップ イベント ハンドラの代わりに、jquery を使用できます。
var x;
$("#txtMy").on("keyup", function(){
x = $(this).val();
alert(x);
})