2011-03-11 31 views
14

好吧,所以我有一个输入框,我需要做的事情每当它发生变化时,我遇到麻烦做鼠标粘贴。这里是我的代码Jquery/JS绑定“粘贴”事件处理程序输入文本框

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

getMaxCapacity()函数现在返回输入的数字* 30;

这里是场景时
1:I粘贴3,也不会改变(ⅰ仍然看到警报)
2:然后,当我粘贴如图5所示,这将是90(3 * 30)
3 :然后,如果我粘贴10它将是150(5 * 30),依此类推。

我认为它在粘贴实际发生之前执行处理程序。关于我能做什么的任何想法? (.change将不起作用,它必须在u粘贴后立即发生)

回答

45

您应该处理inputpropertychange事件。
Demo

+0

+1尼斯,我不知道这件事! – nyuszika7h 2011-03-11 22:04:53

+0

propertychange是否会要求我留下焦点? – Ave 2011-03-11 22:06:12

+0

我试过.bind('propertychange',function(){...似乎并不工作 – Ave 2011-03-11 22:12:10

3

你说得对。粘贴事件在输入值更改之前触发。尝试在超时包装您的处理程序:

+0

可能会工作,但绑定“输入”的作品! – Ave 2011-03-11 23:10:03

+0

太棒了!非常有用 – 2012-07-16 11:54:26

1

与.live更换绑定的事件,它应该工作,像这样:

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