我只想显示一个“已更新”而不是多个(每个输入符号一个)。而且, - 因为这发送了ajax请求(未在代码中显示) - 我想“批量”发送更改的数据 - 而不是每个输入的符号(h,e,l,l,o)单独的ajax请求相反,“每个输入的单词的ajax请求...或每2秒...”以最小化Db负载。我可以使用change()但我还需要更新粘贴事件。这是代码:
$(':input').bind("input propertychange", function() {
var thiss = $(this);
setTimeout(
function() {
thiss.after('<span>Updated!</span>');
}, 2000);
});
答案 0 :(得分:0)
这是有需要的人的解决方案(感谢Andreas !!!):
function debounce(fn, delay) {
var timer = null;
return function() {
var context = this,
args = arguments;
clearTimeout(timer);
timer = setTimeout(function() {
fn.apply(context, args);
}, delay);
};
}
$(':input').bind("input propertychange", debounce(function(event) {
var thiss = $(this);
thiss.parent().append('<div class="updated" style="color: green">Updated!</div>').children(':last').hide().fadeIn(200).delay(1000).fadeOut(200);
}, 666));
小提琴:https://jsfiddle.net/un3b5gks/3/
获取有关“去抖动”的更多信息: