jQueryでのinput [type = text]の値変更の検出


159

特定の入力ボックスの値が変わるたびに関数を実行したい。でほとんど動作し$('input').keyup(function)ますが、たとえば、テキストをボックスに貼り付けても何も起こりません。$input.change(function)入力がぼやけたときにのみトリガーされるので、テキストボックスの値が変更されたときはいつでもすぐにそれを知るにはどうすればよいですか?


2
では、なぜkeyuppasteイベントの両方をバインドしないのですか?
Ilia G

devcurry.com/2009/07/…-切り取り/コピー/貼り付けイベントの検出
BeRecursive

2
@ liho1eye pasteは私が考えたものの1つにすぎません。すべての異なる着信パスを考える必要があるのではなく、決定的な変更を聞きたいと思います。
Jeriko

@Jerikoこ​​れは、値を変更できる唯一の2つの方法です(jsコードによる明らかな更新に加えて)。
Ilia G

Ctlr-X(cut)もキャプチャします。
Alexis Wilke、2015年

回答:


340

'on'は 'bind'関数よりも推奨されることを覚えておいてください。したがって、常に次のようなイベントリスナーを使用するようにしてください。

$("#myTextBox").on("change paste keyup", function() {
   alert($(this).val()); 
});

なんでpaste?まず、で何かを貼り付けた場合にのみ機能すると思いましたCTRL+V
ブラック

3
@ NicolasS.Xu:値を直接割り当ててもDOMイベントはトリガーされません
Alejandro Silva

console.log()代わりに使用する場合はさらに良いでしょうalert。へのキーアップは非常に煩わしいでしょうalert
cytsunny

4
@cytsunny確かに、アラートは煩わしいですが、この場合は値の変更時に実行されるコードの例であり、実際には任意のペイロードにすることができます。
アレハンドロシルバ

1
右クリックして貼り付けると、貼り付け前の入力値が返されます。
alstr


15

これを試してください。https: //stackoverflow.com/users/1169519/teemuへのクレジット

ここで私の質問に答えてください: /programming/24651811/jquery-keyup-doesnt-work-with-keycode-filtering?noredirect=1#comment38213480_24651811

この解決策は、プロジェクトを進めるのに役立ちました。

$("#your_textbox").on("input propertychange",function(){

   // Do your thing here.
});

注:IEの下位バージョンのpropertychange。


6

テキストボックスイベントを使用することもできます-

<input id="txt1" type="text" onchange="SetDefault($(this).val());" onkeyup="this.onchange();" onpaste="this.onchange();" oninput="this.onchange();">

function SetDefault(Text){
  alert(Text);
}

これを試して


5

これを試して:

基本的に、各イベントを説明するだけです。

HTML:

<input id = "textbox" type = "text">

jquery:

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

$("#textbox").change(function() { 
alert($(this).val());  
}); 



0

これを使用してください:https : //github.com/gilamran/JQuery-Plugin-AnyChange

コンテンツメニュー(マウスの使用)など、入力を変更するすべての方法を処理します


どんなふうに使うの?私はそれをHTMLに含め、$( "input")。anyChange(function(e){console.log(e);});を使用しました。しかし、console.log行には到達しませんでした
Ofer Gal

0

このイベントの組み合わせは私にとってうまくいきました:

$("#myTextBox").on("input paste", function() {
   alert($(this).val()); 
});

0

忘れないcutselectEVENTSを!

受け入れられた答えはほぼ完璧ですが、cutおよびselectイベントを忘れています。

cut ユーザーがテキストを切り取ると発生します(CTRL + Xまたは右クリック)

select ユーザーがブラウザの推奨オプションを選択すると発生します

それらも追加する必要があります。

$("#myTextBox").on("change paste keyup cut select", function() {
   //Do your function 
});
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.