我无法让我的CKEditor正常工作。
我使用Jquery插入我的实例。并为编辑器设置我自己的Ajax保存功能。
我的实例总是很好地插入。编辑器应该出现,而且似乎有效。 但是:事实证明,我插入实例的时间, - textarea没有被更新 - 因此没有更新的数据发送到Ajaxcall。它发送旧数据。
发送到ajax调用后,我销毁我的实例: CKEDITOR.instances [currentInstance] .destroy(); 编辑器似乎每次都被妥善销毁。 OnClick然后我重新插入编辑器(相同的实例名。当我销毁实例时我也删除了textarea,然后重新插入textarea,当我重新插入实例时。相同的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>
继续保存功能:
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 :(得分:1)
没关系! 我想到了。事实证明实例需要存在于DOM中,在destroy()上我切换事件的顺序,以便先发生destroy(),然后删除textarea。现在工作得很好。