2012-07-16 54 views
1

我無法讓CKEditor正常工作。CKEditor和Ajax - 不在二次更新

我正在使用Jquery插入我的實例。併爲編輯器設置我自己的Ajax保存功能。

我的實例總是插入很好。編輯看起來應該是這樣,而且似乎工作。 但是:事實證明,我插入實例的時間, - textarea沒有被更新 - 因此沒有更新的數據發送到Ajaxcall。它發送舊數據。

發送到ajax調用後,我銷燬了我的實例: CKEDITOR.instances [currentInstance] .destroy(); 編輯似乎每次都會被正確銷燬。 OnClick然後我重新插入編輯器(相同的實例名稱。當我銷燬實例時,我也刪除textarea,然後重新插入textarea,當我重新插入實例。Same textareaname)。

誰能告訴我爲什麼我可以一次又一次地插入實例,但編輯器只會第一次更新textarea?

我用盡:

for (var instance in CKEDITOR.instances) { 
      CKEDITOR.instances[instance].updateElement(); } 

插入保存功能 - 只要把AjaxCall的面前。但仍然沒有更新。

這是實例的構建。通過jQuery我插入此爲HTML():

<script type="text/javascript"> 
    CKEDITOR.replace('tekstindhold233', 
    { height:'250px',width:'575px' }); 
</script> 

而且繼承人的savefunction:

CKEDITOR.plugins.add('popwebsave', 
{ 
init: function(editor) 
{ 
var pluginName = 'popwebsave'; 


editor.addCommand(pluginName, 
{ 
exec : function(editor) 
{ 

for (var i in CKEDITOR.instances){ 
    var currentInstance = i; 
    break; 
} 
for (var instance in CKEDITOR.instances) { 
      CKEDITOR.instances[instance].updateElement(); } 

var sprog = $('#lan_holder').text(); 
var vis = $('#vis_holder').text(); 
var pageId = $('#pageId_holder').text(); 
var tekstIndhold = CKEDITOR.instances[currentInstance].getData(); 
var tekstIndholdBox = currentInstance.replace('tekstindhold',''); 
var contentOrden = $('#content_orden' + tekstIndholdBox).text(); 
var dataString = 'lan=' + sprog + '&tekstindhold=' + tekstIndhold + '&eid=' + tekstIndholdBox + '&vis=' + vis + '&id=' + pageId + '&contentOrden=' + contentOrden; 

$("#tekstindhold_box" + tekstIndholdBox).animate({ 
    opacity: 0 
     } , { 
    duration: 500, 
    complete: function() { 
    $("#textarea_box" + tekstIndholdBox).text(''); 

$.ajax({ 
type: "POST", 
url: "includes/JQ_opdater_tekst.php", 
data: dataString, 
dataType: "json", 
cache: false, 
success: function(databack){ 
$("#textarea_box" + tekstIndholdBox).animate({ 
     height: 100 
     }, 500, function() { 
     $("#tekstindhold_box" + tekstIndholdBox).html(databack.tekstindhold_db); 
     $("#tekstindhold_box" + tekstIndholdBox).animate({ 
     opacity: 1 
     }, 500, function() { 

CKEDITOR.instances[currentInstance].destroy(); 

     }); 
}); 

    } 

}); 


     } 
    }); 

}, 
canUndo : true 
}); 

/* 
editor.addCommand(pluginName, 
new CKEDITOR.dialogCommand(pluginName) 

); 
*/ 

editor.ui.addButton('Popwebsave', 
{ 
label: 'Gem', 
command: pluginName, 
className : 'cke_button_save' 
}); 
} 
}); 
+0

沒關係!我想到了。事實證明,這個實例需要存在於DOM中,destroy() 我切換了事件的順序,以便destroy()首先發生,然後THEN刪除了textarea。現在工作得很好。 – 2012-07-17 09:13:49

回答

1

沒關係! 我明白了。結果發現實例需要存在於DOM中,在destroy()上,我切換了事件的順序,以便destroy()首先發生,然後THEN刪除了textarea。現在工作得很好。