Диалог ckeditor и jquery UI не работает
Я без конца пытался, теперь ты разрешаешь эту крайне неприятную ситуацию, которая у меня была. Я пытаюсь заставить ckEditor работать в диалоговом окне jQuery UI. Редактор включен отлично, и он заменяет текстовое поле на оболочку ckeditor, но я не могу редактировать / добавлять контент в блоке контента. Единственное работающее решение, которое я видел сейчас, было, если я нажму на "Исходный код" в редакторе и откажусь от него, я смогу добавить к нему контент.
Моя импликация была просто <script type='text/javascript' src='ckeditor/ckeditor.js'></script>
и я не добавил никакой дополнительной информации / кода. Есть идеи?
3 ответа
Была такая же проблема,
помогло удаление эффектов из модала: Удалено:
show: "scale",
hide: "puff",
Теперь мой звонок выглядит так:
$("#report").dialog({
title: "<?php echo caption("REPORT_EDITOR"); ?>",
bgiframe: true,
autoOpen: false,
width: 990,
height: 620,
modal: true,
draggable: true,
resizable: true,
resizeStop: function(event, ui) {
var y = $(event.target).height();
repEditor.resize( "99%", y - 10 );
},
buttons: {
'Close': function() {
$(this).dialog('close');
}
}
});
Для версий jQuery-UI (1.10+) и jQuery (1.10+) и CKEditor 3.6 это решение, похоже, работает:
_moveToTop: function( event, silent ) {
var $parent = this.uiDialog.parent();
var $elementsOnSameLevel = $parent.children();
var heighestZIndex = 0;
$.each($elementsOnSameLevel, function(index, element) {
var zIndexOfElement = $(element).css('z-index');
if (zIndexOfElement) {
var zIndexOfElementAsNumber = parseInt(zIndexOfElement) || 0;
if (zIndexOfElementAsNumber > heighestZIndex) {
heighestZIndex = zIndexOfElementAsNumber;
}
}
});
var currentZIndex = this.uiDialog.css('z-index');
var moved;
if (currentZIndex >= heighestZIndex) {
moved = false;
} else {
this.uiDialog.css('z-index', heighestZIndex + 1);
moved = true;
}
if ( moved && !silent ) {
this._trigger( "focus", event );
}
return moved;
}
Вы можете либо отредактировать файл в строке (не рекомендуется), либо просто переопределить стандартную функциональность jQuery-UI в отдельном файле JS, который загружается после jQuery-UI, но до создания диалогового окна.
$.widget("ui.dialog", $.ui.dialog, {
_moveToTop: function( event, silent ) {
//Logic from above
}
});
В качестве альтернативы для сохранения анимации "show" и "hide", создайте свой экземпляр редактора после завершения события "show" с помощью функции обратного вызова для завершения: опция "show"
$("#report").dialog({
title: "<?php echo caption("REPORT_EDITOR"); ?>",
bgiframe: true,
autoOpen: false,
width: 990,
height: 620,
modal: true,
// start my suggestion
show: {
effect: "scale",
complete: function() {
$( "#selector" ).ckeditor();
}
},
hide: "puff",
// end my suggestion
draggable: true,
resizable: true,
resizeStop: function(event, ui) {
var y = $(event.target).height();
repEditor.resize( "99%", y - 10 );
},
buttons: {
'Close': function() {
$(this).dialog('close');
}
}
});