1
我正在执行关键字或粘贴上的Ajax请求。问题在于,当用户使用Control-V进行粘贴时,会发生两个Ajax请求 - 一个用于粘贴,一个用于键入。关键字或粘贴上的Ajax
$("#my-form").bind('keyup paste', function(e) {...}
什么是绑定在keyup或粘贴上的好方法?
我正在执行关键字或粘贴上的Ajax请求。问题在于,当用户使用Control-V进行粘贴时,会发生两个Ajax请求 - 一个用于粘贴,一个用于键入。关键字或粘贴上的Ajax
$("#my-form").bind('keyup paste', function(e) {...}
什么是绑定在keyup或粘贴上的好方法?
您可以使用setTimeout
/clearTimeout
延迟事件,因此它只触发一次。
$("#my-form").bind('keyup paste', function(e) {
clearTimeout($(this).data('timeout'));
$(this).data('timeout', setTimeout(function(){
// your code
}, 200));
});
因为你得到的'keyup'事件触发时用户贴,你为什么需要绑定'paste'分开? – lanzz 2012-07-11 20:23:33
@lanzz右键单击 - >粘贴 – TheZ 2012-07-11 20:23:58
理想情况下,您可以存储内容,然后检查每次事件触发时是否更改了内容,这样它只会运行一次。你可以绑定两个(或更多)事件,即使连续两次触发,只有第一个会看到更改并运行。 – TheZ 2012-07-11 20:29:52