2013-07-16 42 views
1

我通過調用CKonBlur一個爲他們每個人在$(document).ready(..方法註冊我的每一個文字區域之前完成:CKEDIT的getData:等方法來提交數據

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()); 
} 

回答

1

我100%肯定getData()不是異步的。 setData()是,但是getData()不是。它不可能,因爲它返回一個值。你在其他地方有一個bug。

+0

我不認爲它是一個錯誤;一旦我改變了storeNotifications並直接傳遞了CKEDITOR.instances [name] .getData()的響應,它在所有情況下立即正確工作... – MrG

相關問題