从多个事件中取消退回操作
Debounce actions from multiple events
如何取消可从多个事件启动的操作?下面是一个示例,仅用于演示行为: http://jsfiddle.net/eXart/2/
<input type="text" id="t">
<div id="x"></div>
<script>
function debounce(fn, delay) {
var timer = null;
return function () {
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(context, args);
}, delay);
};
}
function doStuff(){
document.getElementById("x").innerHTML +="<br>stuff";
}
var t = document.getElementById("t");
t.onchange = debounce(function(){ doStuff() }, 500);
t.onblur = debounce(function(){ doStuff() }, 500);
</script>
如果在文本框中输入一些文本并单击它,您会看到"stuff"出现两次而不是一次,因为每个事件都有自己的去抖动实例。如何跨事件共享去抖动实例?
您必须附加相同的已退回处理程序,如下所示
var debouncedFunc = debounce(function(){ doStuff(); }, 500);
t.onchange = debouncedFunc;
t.onblur = debouncedFunc;
如果要共享计时器。
但我认为,如果您想避免输入失去焦点后的重复调用,您应该只使用onchange
或onblur
事件之一。
相关文章:
- jquery选中并取消选中所有操作
- fs extra:错误:EPERM:不允许操作,取消链接
- 为什么JS confirm()获胜't当我在确认对话框中点击“取消”时,取消提交操作
- 上传文件时检测到已取消的拖放操作
- 使用转义键在余烬文本视图中取消操作
- 单击确认框上的取消不会取消操作
- 从多个事件中取消退回操作
- 获得取消的 JavaScript 提示不执行任何操作
- 从我的应用中打开/关闭或取消授权用户,并列出应用中用户的操作
- 确认框取消功能与确定执行相同的操作
- 在jQueryUI可排序小部件中,如何在start方法中执行取消操作
- 停止/取消表单 j查询表单操作从 JavaScript
- Javascript confirm() 在单击取消时仍然执行操作.:(.
- 取消操作后,我无法在geoserver中保存图层
- 如何取消/忽略redux中的操作
- 如何使用Javascript取消HTML5拖放操作
- 如何在 Twitter Bootstrap 的表单操作中取消 btn-primary 的表单提交
- 如何取消AJAX长期运行的MVC操作客户端(javascript)
- 在下钻中取消对xAxis标签的单击操作的绑定
- 取消操作如果“取消”;作为对confirm()的响应