我已经从 oleq 实现了这个:如何在服务器上保存内联编辑器内容?
CKEDITOR.disableAutoInline = true;
var editor = CKEDITOR.inline( 'editable', {
on: {
instanceReady: function() {
periodicData();
}
}
} );
var periodicData = ( function(){
var data, oldData;
return function() {
if ( ( data = editor.getData() ) !== oldData ) {
oldData = data;
console.log( data );
// Do sth with your data...
}
setTimeout( periodicData, 1000 );
};
})();
函数periodicData 将检查内容是否每秒钟都发生变化并做某事。我的问题是我将使用昂贵的数据库更新来做一个 ajax 发布,而这种更新无法以每秒的速度进行。我在想,如果我可以按照periodicData 的方式做一些事情,但检查可编辑对象在最后x 秒内是否没有keyup。这种方式将节省大量昂贵的 ajax 调用。
我尝试了几次,但未能在最后 x 秒内实现 has not a keyup。想法就在这里:如何延迟 .keyup() 处理程序直到用户停止输入?但我可以把这两个缝合在一起。
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
// Usage:
$('input').keyup(function() {
delay(function(){
alert('Time elapsed!');
}, 1000 );
});
我很感激任何提示。提前致谢。