input
でjquery .change
を使うとき、イベントは入力がフォーカスを失ったときにのみ発生します。
私の場合は、入力値が変更されたらすぐにサービスを呼び出す必要があります(値が有効かどうかを確認します)。どうすればこれを達成できますか?
説明と例を示すために更新されました
例: http://jsfiddle.net/pxfunc/5kpeJ/
方法1。input
name__イベント
最近のブラウザでは input
NAME_ イベントを使います。このイベントは、ユーザーがテキストフィールドに入力、貼り付け、元に戻す、基本的に値がある値から別の値に変更されたときに発生します。
JQueryではこれを次のようにします。
$('#someInput').bind('input', function() {
$(this).val() // get the current value of the input field.
});
jQuery 1.7以降、bind
name__をon
name__に置き換えます。
$('#someInput').on('input', function() {
$(this).val() // get the current value of the input field.
});
方法2 keyup
name__イベント
古いブラウザではkeyup
name__イベントを使用します(キーボードのキーが離されると発生します。 "w"が解放されると入力値が変更されkeyup
name__イベントが発生するため、このイベントはある種の誤検知を引き起こす可能性があります。 "shift"キーが離されるとkeyup
name__イベントが発生しますが、入力は変更されていません。ユーザーが右クリックしてコンテキストメニューから貼り付けても、このメソッドは起動しません。
$('#someInput').keyup(function() {
$(this).val() // get the current value of the input field.
});
方法3。タイマー(setInterval
name__またはsetTimeout
name__)
keyup
name__の制限を回避するために、入力の値を定期的にチェックして値の変化を判断するようにタイマーを設定できます。このタイマーチェックを行うには、setInterval
name__またはsetTimeout
name__を使用できます。このSO質問のマーク付き回答を参照してください。 jQueryテキストボックス変更イベント 、または特定の入力フィールドのタイマーを開始および停止するためのfocus
name__およびblur
name__イベントを使用した実用例
あなたがHTML5を持っているならば:
oninput
(実際に変更が発生した場合にのみ発生しますが、即時に発生します)それ以外の場合は、入力要素の値が変更されたことを示す可能性があるこれらすべてのイベントを確認する必要があります。
onchange
onkeyup
( not keydown
または入力の値としてのkeypress
にはまだ新しいキーストロークがありません)onpaste
(サポートされている場合)そして多分:
onmouseup
(これについてはよくわかりません)HTML5ではjQueryを使わずに input
イベント を使うことができます。
var input = document.querySelector('input');
input.addEventListener('input', function()
{
console.log('input changed to: ', input.value);
});
これは入力のテキストが変わるたびに起動します。
IE 9以降および他のブラウザでサポートされています。
ここで jsFiddleに住んでみてください 。
他の人がすでに示唆しているように、あなたの場合の解決策は 複数のイベントをスニフする です。
この仕事をしているプラグインはしばしば以下のイベントをリッスンします。
$ input.on( 'キー押下キーアップキーアップマウスダウンクリックマウスアップの変更'、ハンドラ);
うまくいくと思われる場合は、focus
、blur
、その他のイベントも追加できます。
ユーザーの行動に従って実行するための更なる手順をブラウザのメモリにロードするので、私はイベントをリスニングするために超えないことを提案します。
注意: JavaScriptでinput要素の値を変更しても(例えばjQueryの.val()
メソッドを介して)上記のイベントは発生しません
(参照: https://api.jquery.com/change/ ).
要素内で何かが変更されたときにイベントが発生するようにしたい場合は、 keyup イベントを使用できます。
//要素がフォーカスを失うと、.blurがトリガーされます
$('#target').blur(function() {
alert($(this).val());
});
//手動でトリガーするには
$('#target').blur();
keyup や keypress のようなjQueryイベントがあります。これらは入力HTML要素で使用できます。さらに blur() イベントを使用することもできます。
これは、jQuery 1.7以上を使用した入力に対するすべての変更をカバーしています。
$(".inputElement").on("input", null, null, callbackFunction);