14

Allright, SO i have an input box and I need to do things everytime it changes, I am having trouble doing it for mouse paste. Here is the code I have

$("#attack-navy"+unit.ID+"-number").bind('paste', function(){
            alert("paste detected");
            $("#attack-max-capacity").text(getMaxCapacity());
});

the getMaxCapacity() function return number entered * 30 for now;

Here is the scenario when
1: I paste 3, it will not change (i still see the alert)
2: Then when i paste 5, it will be 90(3 * 30)
3: Then if i paste 10 it will be 150(5 * 30), and so on.

I think its doing the handler before the paste actually occurs. Any ideas on what I can do? (.change will not work, it must happen as soon as u paste)

Ave
  • 282
  • 2
  • 4
  • 9

3 Answers3

45

You should handle the input and propertychange events.
Demo.

SLaks
  • 868,454
  • 176
  • 1,908
  • 1,964
3

You're right. The paste event is firing before the value of the input changes. Try wrapping your handler in a timeout:

setTimeout(function() { $("#attack-max-capacity").text(getMaxCapacity()); }, 0);
tilleryj
  • 14,259
  • 3
  • 23
  • 22
1

Replace the bind event with .live and it should work, like this:

$("#attack-navy"+unit.ID+"-number").live('paste', function(){
            alert("paste detected");
            $("#attack-max-capacity").text(getMaxCapacity());
});
takrl
  • 6,356
  • 3
  • 60
  • 69
karev
  • 11
  • 1