2012-04-18 19 views
-3

れるonkeypressテキストボックス: 私はこのてきた問題

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

そして、私の.jsで

は、私が持っているファイル:私は私のテキストボックスに '2' を持っている場合、

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

しかし、その後、私は4を入力します。 、xの値はまだ2です。これを解決するには?

+1

代わりに 'onkeyup'を試してください – MilkyWayJoe

+2

インラインアトリビュートを使用してイベントハンドラをアタッチするのは悪い習慣です。 jQueryなどのフレームワークを使用している場合は、バインディングのプロセス全体を簡単にするので、実際にはそれを行うことについて言い訳はありません。 –

答えて

1

使用keyup

にここでは、あなたがunobtrusive wayでそれを行う方法です。

HTML

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

スクリプト

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

ワーキングサンプル:http://jsfiddle.net/VmELF/4/

あなたがDOMに注入されているテキストボックスに機能をバインドしたい場合DOMロード後(Ajaxコールなどで可能)、あなたはm AY jQueryのon

$(function(){ 
    $("body").on("keyup","#txtSearchKey",function (event) { 
    alert($(this).val()) 
    }); 
}); 
1

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

0

代わりにマークアップイベントハンドラのあなたはjqueryのを使用することができます使用します。

var x; 

$("#txtMy").on("keyup", function(){ 
    x = $(this).val(); 
    alert(x); 
}) 
+1

質問を編集して無関係にしてしまったので、以前のコメントを削除しました。 –

0

いくつかのこと:

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

は両方http://jsfiddle.net/8XTLW/1/

1

​​とkeypressイベントで作業jsfiddleを参照してください入力したキーが実際にテキストボックスに登場する前に実行されます。キーが現れた後に入力の新しい値を取得する場合は、代わりにイベントを使用してください。

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

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

あなたはとにかくライブラリを使用していることから、.on()を使ってJavaScriptであなたのイベントハンドラをバインド検討すべきです。あなたのロジック(javascript)をあなたのビュー(HTML)から分離して保持するのは良い習慣です。

関連する問題