イベントでjquery .change
を使用input
すると、入力がフォーカスを失ったときにのみイベントが発生します
私の場合、入力値が変更されたらすぐにサービスを呼び出す(値が有効かどうかを確認する)必要があります。どうすればこれを達成できますか?
イベントでjquery .change
を使用input
すると、入力がフォーカスを失ったときにのみイベントが発生します
私の場合、入力値が変更されたらすぐにサービスを呼び出す(値が有効かどうかを確認する)必要があります。どうすればこれを達成できますか?
回答:
説明と例のために更新
例: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
、特定の入力フィールドのためのタイマーを起動および停止するイベント
innerText
またはvalue
属性へのJSコードの変更(ユーザー入力のシミュレーション)のみがMutationObserverイベントjsfiddle.net/pxfunc/をトリガーします04chgpws / 1(MutationObserverイベントログについては、console.logを参照してください)。私が見ることができる別のテストケースはありますか?
HTML5がある場合:
oninput
(実際に変更が発生したときにのみ発生しますが、すぐに発生します)それ以外の場合は、入力要素の値の変更を示す可能性のあるこれらすべてのイベントを確認する必要があります。
onchange
onkeyup
(ない keydown
かkeypress
、入力の値にまだ新しいキーストロークが含まれていないため)onpaste
(サポートされている場合)そして多分:
onmouseup
(これについてはわかりません)HTML5を使用し、jQueryを使用しない場合は、input
イベントを使用できます。
var input = document.querySelector('input');
input.addEventListener('input', function()
{
console.log('input changed to: ', input.value);
});
これは、入力のテキストが変更されるたびに発生します。
IE9 +およびその他のブラウザーでサポートされています。
ここjsFiddleでライブしてみてください。
他の人がすでに示唆したように、あなたの場合の解決策は複数のイベントを嗅ぐことです。
この作業を行うプラグインは、多くの場合、次のイベントをリッスンします。
$ input 。オン('keydown keypress keyup keydown mousedown click mouseup' 、ハンドラーを変更);
収まると思われる場合はfocus
、blur
やその他のイベントも追加できます。
ユーザーの行動に応じて実行する追加のプロシージャがブラウザのメモリに読み込まれるため、イベントをリッスンしないでください。
注意: JavaScriptで(jQuery .val()
メソッドなどを使用して)入力要素の値を変更しても、上記のイベントは発生しません。
(参照: https : //api.jquery.com/change/)。
.val()
には、入力フィールドの変更イベントなどの後に対応するアクションを呼び出すことができます。次のようにします... $('#element').val(whatever).change()
要素内で何かが変更されるたびにイベントを発生させたい場合は、keyupイベントを使用できます。
onchange
、状態を自分で追跡する必要があります。 入力の状態が変更される前keydown
に発生するため、機能しません。