Javascript 基于键控或粘贴的Ajax
我正在对keyup或paste执行Ajax请求。问题是,当用户使用Control-V进行粘贴时,会出现两个ajax请求——一个用于粘贴,一个用于keyupJavascript 基于键控或粘贴的Ajax,javascript,jquery,Javascript,Jquery,我正在对keyup或paste执行Ajax请求。问题是,当用户使用Control-V进行粘贴时,会出现两个ajax请求——一个用于粘贴,一个用于keyup $("#my-form").bind('keyup paste', function(e) {...} 在keyup或paste上绑定的好方法是什么?您可以使用setTimeout/clearTimeout延迟事件,因此它只触发一次 $("#my-form").bind('keyup paste', function(e) { cl
$("#my-form").bind('keyup paste', function(e) {...}
在keyup或paste上绑定的好方法是什么?您可以使用
setTimeout
/clearTimeout
延迟事件,因此它只触发一次
$("#my-form").bind('keyup paste', function(e) {
clearTimeout($(this).data('timeout'));
$(this).data('timeout', setTimeout(function(){
// your code
}, 200));
});
演示:您可以使用
setTimeout
/clearTimeout
延迟事件,因此它只触发一次
$("#my-form").bind('keyup paste', function(e) {
clearTimeout($(this).data('timeout'));
$(this).data('timeout', setTimeout(function(){
// your code
}, 200));
});
演示:既然用户粘贴时触发了
keyup
事件,为什么需要单独绑定paste
?理想情况下,您可以存储内容,然后在每次事件触发时检查内容是否已更改,这样它将只运行一次。您可以绑定两个(或多个)事件,即使两个事件连续触发,也只有第一个事件会看到更改并运行。@z最终这样做,效果很好。既然用户粘贴时触发了keyup
事件,为什么需要分别绑定paste
,然后检查它们是否在每次事件触发时都进行了更改,这样它将只运行一次。您可以同时绑定两个(或多个)事件,即使两个事件连续触发,也只有第一个事件会看到更改并运行。@TheZ最终这样做了,工作正常。