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