嗨,我有一个函数 Save 会在 2 秒超时后触发 onchange 事件或 oninput。问题是在这种情况下,函数 Save 被触发了两次:
- 输入一些东西
- 等待 2s
- oninput 触发保存事件
- 点击输入
- onchange 触发保存事件
我只需要保存一次,具体取决于首先发生的情况。如果用户键入内容并立即离开输入,则应取消通过 onchange 保存和 oninput 超时。但是,如果键入某些内容并等待 2 秒,则不应触发通过 oninput 和 onchange 保存。
我需要一些简单而干净的解决方案。它存在吗?谢谢 :)
编辑:这是我的代码http://jsfiddle.net/TQ9KR/
jQuery('#text').on('change', function() {
save();
});
jQuery('#text').on('input', function(){
clearTimeout(this.delayer);
var context = this;
this.delayer = setTimeout(function () {
jQuery(context).trigger('change');
}, 2000);
});
function save(){
jQuery('#a').text('saved on ' + new Date().getTime());
}