我通过CKonBlur
方法为每个textareas调用$(document).ready(..
一个来注册我的每个textareas:
function CKonBlur(name) {
CKEDITOR.instances[name].on('blur', function () {
CKsync(name); // push HTML data from CKEDITOR into the associated textarea
storeNotifications(name); // submit the textarea to the server
});
}
function CKsync(name) {
$("textarea#" + name).val(CKEDITOR.instances[name].getData());
}
不幸的是,似乎getData
是异步的,我无法想出在(!)提交数据之前等待它完成的方法。
问题:在调用getData
方法之前,如何确保storeNotifications
完成?
我还尝试使用checkDirty
但没有取得任何成功(它只是使浏览器崩溃):
function CKsync(name) {
while (CKEDITOR.instances[name].checkDirty() == true);
{
// do nothing
}
$("textarea#" + name).val(CKEDITOR.instances[name].getData());
}
答案 0 :(得分:1)
我100%确定getData()
不是异步的。 setData()
是,getData()
不是。它不可能,因为它返回一个值。你在其他地方有一个bug。