を持っています <input type="text">
、そしてテキストボックスのテキストが変更された後に関数を呼び出す必要があります(jQueryのkeydownおよびkeypressハンドラーの間に実行されるアクションを含みます)。
JQueryハンドラーから関数を呼び出すと、値(e.target.value
)入力が追加される前と同じです。毎回手動で入力を値に追加したくないので、関数を呼び出して更新された値を使用させるにはどうすればよいですか?
私があなたを正しく理解しているなら、このようなものはあなたがそれをすることができる方法です
_$('input').bind('change keydown keyup',function (){
/// do your thing here.
// use $(this).val() instead e.target.value
});
_
更新:03/05/13
注意してください:.on()
とは対照的に.bind()
を使用するほうがよいこと
JQuery 1.7以降、.on()メソッドは、イベントハンドラーをドキュメントに添付するための推奨メソッドです。以前のバージョンでは、.bind()メソッドは、イベントハンドラーを要素に直接アタッチするために使用されていました。ハンドラーはjQueryオブジェクトで現在選択されている要素にアタッチされるため、これらの要素は.bind()の呼び出しが発生した時点で存在している必要があります。より柔軟なイベントバインディングについては、.on()または.delegate()のイベント委任の説明を参照してください。
詳細については jQuery Bind
Keyupを使用できます。つまり、キーが解放された後にのみ呼び出すことができます。
$("#idofinputfield").keyup(function() {
youFunction($(this).val());
});
試しましたか
$('#target').keyup(function(){
alert($(this).val());
});
階層の上の要素にバインドする必要がある場合は、keyDownハンドラーでkeyUpイベントをサブスクライブできます。
$("#container").keydown(function (e) {
//here you decide whether to handle the key event, and grab the control that sent the event
var myInput = e.target;
$("#container").one('keyup', function() {
console.log(myInput.val());
// do smth here
});
});
新しい文字が挿入される位置を取ることにより、将来の値を生成できます。
$('input').bind('keypress',function (){
var value = e.target.value,
idx = e.target.selectionStart,
key = e.key;
value = value.slice(0, idx) + key + value.slice(idx + Math.abs(0));
return yourfunction(value);
});
現在の入力値を取得するには、event.keyを使用する必要がありますテキストボックスに表示される前。
これがコードです。
function validate()
{
document.getElementById("divOutput").innerHTML = event.key;
//I am here returning false so that you can see that this value is being entered before the text is input. This is very useful for number validation purposes.
return false;
}
Enter Number: <input type="text" id="txtInput" onkeydown="return validate()" /><br />
You Entered <div id="divOutput"></div>