Jquery / JS将“paste”事件处理程序绑定到输入文本框

时间:2011-03-11 21:55:08

标签: javascript jquery event-handling mouseevent paste

好吧,所以我有一个输入框,我需要在每次更改时都做一些事情,我在为鼠标粘贴做这件事时遇到了麻烦。这是我的代码

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

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

以下是情景
1:我粘贴3,它不会改变(我仍然看到警报)
2:然后当我粘贴5时,它将是90(3 * 30)
3:然后,如果我粘贴10将是150(5 * 30),依此类推。

我认为它在粘贴实际发生之前就做了处理程序。关于我能做什么的任何想法? (.change将无效,必须在粘贴后立即发生)

3 个答案:

答案 0 :(得分:45)

您应该处理inputpropertychange事件 Demo

答案 1 :(得分:3)

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

setTimeout(function() { $("#attack-max-capacity").text(getMaxCapacity()); }, 0);

答案 2 :(得分:1)

用.live替换绑定事件,它应该可以工作,如下所示:

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