217

I want to execute a function every time the value of a specific input box changes. It almost works with $('input').keyup(function), but nothing happens when pasting text into the box, for example. $input.change(function) only triggers when the input is blurred, so how would I immediately know whenever a text box has changed value?

Jeriko
  • 6,547
  • 4
  • 28
  • 40

11 Answers11

486

Update - 2021

As of 2021 you can use input event for all the events catering input value changes.

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

Original Answer

just remember that 'on' is recommended over the 'bind' function, so always try to use a event listener like this:

$("#myTextBox").on("change paste keyup", function() {
   alert($(this).val()); 
});
Daniyal Nasir
  • 669
  • 7
  • 22
Alejandro Silva
  • 8,808
  • 1
  • 35
  • 29
115

Description

You can do this using jQuery's .bind() method. Check out the jsFiddle.

Sample

Html

<input id="myTextBox" type="text"/>

jQuery

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

More Information

Community
  • 1
  • 1
dknaack
  • 60,192
  • 27
  • 155
  • 202
16

Try this.. credits to https://stackoverflow.com/users/1169519/teemu

for answering my question here: https://stackoverflow.com/questions/24651811/jquery-keyup-doesnt-work-with-keycode-filtering?noredirect=1#comment38213480_24651811

This solution helped me to progress on my project.

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

   // Do your thing here.
});

Note: propertychange for lower versions of IE.

Samvel Aleqsanyan
  • 2,812
  • 4
  • 20
  • 28
andres
  • 161
  • 1
  • 3
11

you can also use textbox events -

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

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

Try This

Community
  • 1
  • 1
Ishan Jain
  • 8,063
  • 9
  • 48
  • 75
5

Try this:

Basically, just account for each event:

Html:

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

Jquery:

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

$("#textbox").change(function() { 
alert($(this).val());  
}); 
H Bellamy
  • 22,405
  • 23
  • 76
  • 114
4
$("#myTextBox").on("change paste keyup select", function() {
     alert($(this).val());
});

select for browser suggestion

4

DON'T FORGET THE cut or select EVENTS!

The accepted answer is almost perfect, but it forgets about the cut and select events.

cut is fired when the user cuts text (CTRL + X or via right click)

select is fired when the user selects a browser-suggested option

You should add them too, as such:

$("#myTextBox").on("change paste keyup cut select", function() {
   //Do your function 
});
Oscar Chambers
  • 899
  • 9
  • 25
2

Try this:

$("input").bind({
            paste : function(){
                $('#eventresult').text('paste behaviour detected!');
            }
})
Hamed Khosravi
  • 535
  • 7
  • 21
0

Use this: https://github.com/gilamran/JQuery-Plugin-AnyChange

It handles all the ways to change the input, including content menu (Using the mouse)

gilamran
  • 7,090
  • 4
  • 31
  • 50
  • How do You use it? I include it in my HTML and used $("input").anyChange(function (e) { console.log(e); }); But it never got to the console.log line – Ofer Gal Jul 05 '19 at 15:51
0

This combination of events worked for me:

$("#myTextBox").on("input paste", function() {
   alert($(this).val()); 
});
Nole
  • 796
  • 7
  • 11
0

You can use the following code to detect input, keychange, and keypress.

$("#myTextBox").on("input", "keyup", "keydown", "keypress" function() {
  alert($(this).val()); 
});
Tyler2P
  • 2,324
  • 26
  • 22
  • 31