jQueryを使用する場合、.change
イベントinput
は入力がフォーカスを失ったときにのみ発生します。
私の場合、入力値が変更されるとすぐにサービスを呼び出す(値が有効かどうかをチェックする)必要があります。 これを実現するにはどうすればよいでしょうか?
ベストアンサー1
説明と例のために更新されました
例:http://jsfiddle.net/pxfunc/5kpeJ/
方法1.input
イベント
最近のブラウザではinput
イベント。このイベントは、ユーザーがテキスト フィールドに入力したり、貼り付けたり、元に戻したり、基本的に値がある値から別の値に変更されたときに発生します。
jQueryでは次のようにします
$('#someInput').bind('input', function() {
$(this).val() // get the current value of the input field.
});
jQuery 1.7 以降では、次bind
のように置き換えますon
:
$('#someInput').on('input', function() {
$(this).val() // get the current value of the input field.
});
方法2.keyup
イベント
古いブラウザでは、keyup
イベントを使用します (これは、キーボードのキーが放されるとすぐに発生します。このイベントは、"w" キーが放されると入力値が変更されイベントが発生するため、一種の誤検知を引き起こす可能性がありますkeyup
が、"shift" キーが放されるとイベントが発生しますkeyup
が、入力に変更は加えられていません)。また、ユーザーが右クリックしてコンテキスト メニューから貼り付ける場合、このメソッドは発生しません。
$('#someInput').keyup(function() {
$(this).val() // get the current value of the input field.
});
方法3. タイマー(setInterval
またはsetTimeout
)
の制限を回避するには、keyup
入力の値を定期的にチェックして値の変化を判断するタイマーを設定できます。このタイマー チェックを行うにはsetInterval
、またはを使用できますsetTimeout
。この SO の質問のマークされた回答を参照してください。jQuery テキストボックス変更イベントまたは、特定の入力フィールドのタイマーを開始および停止するためのイベントfocus
を使用した動作例については、フィドルを参照してください。blur