2013-03-27 2 views
5

В настоящее время я пытаюсь добавить встроенный ckeditor в некоторый текст.Inline Ckeditor: все кнопки отключены

Нет ошибок javascript occour, но, к сожалению, все инструменты отключены, и я не могу редактировать текст.

http://fiddle.jshell.net/5LuyD/

Любой один есть ключ к пониманию того, что я делаю не так?

ответ

7

Что вам не хватает, это атрибут contenteditable="true" для вашего элемента. Если вы хотите, чтобы редактор был настроен (т. Е. Прошел через CKEDITOR.inline(element, cfg)), сначала установите CKEDITOR.disableAutoInline = true;.

С CKEDITOR.disableAutoInline = true; все элементы contenteditable="true" должны быть инициализированы вручную, чтобы стать экземпляром редактора. См. official guide для встроенных экземпляров.

+0

Эй ... Хорошо, вы оба правы. Я должен использовать contenteditable = "true", но также disableAutoInline = "true", как сказал oleq. Решение: http://jsfiddle.net/5LuyD/2/ Большое спасибо вам обоим –

2

Вы пропустили атрибут contenteditable = "true" для изменяемых тегов!

Вот скрипка. http://fiddle.jshell.net/5LuyD/1/

+0

No !. Если я использую contenteditable = "true", вы получите стандартную, неконфигурированную. При использовании команды inlne() вы можете установить, какие кнопки вы разрешаете. –

+0

Но для начала! вам нужно установить contenteditable = "true". Если вы этого не сделаете, текст не будет доступен для редактирования, и кнопки не станут активными. Дайте мне минуту, и я проверю, почему ваши наборы кнопок не будут работать. – spons

2

Для тех, у кого эта проблема, несмотря на настройку contenteditable="true", есть проблема с Chrome, где contenteditable установлен на false, если элемент (или родительский элемент) не отображается.

См: http://ckeditor.com/forums/CKEditor/Solved-Chrome-Toolbar-buttons-grayed-out-for-INLINE-editor

Решение является либо а) обеспечить элемент виден перед вызовом CKEDITOR.inline() или б) использовать текстовое поле вместо contenteditable элемента (CKE добавляет contenteditable DIV после текстового поля в данном случае) ,

1

У меня была такая же проблема, и я обнаружил для нее другое решение. Если родительский элемент (или сам элемент) изначально установлен для отображения: none contenteditable will = false (на chrome).

Это исправление работает для меня:

var ck = CKEDITOR.inline(element); 
ck.on('instanceReady', function(event) { 
    var editor = event.editor; 
    editor.setReadOnly(false); 
}); 

Ref: https://dev.ckeditor.com/ticket/9814

0

У меня была такая же проблема, и ни один из других предложенных решений работал.

Проблема заключалась в том, что атрибут id для div начинался с числового символа (это был идентификатор GUID). Изменение идентификатора для начала работы с альфа-символом: все кнопки редактора были включены.

По какой-то причине ckEditor не любит идентификаторы, начинающиеся с числовых символов.

0
$(document).ready(function(){ 
    for(var i in CKEDITOR.instances) { 
       var ck=CKEDITOR.instances[i]; 
       ck.on('instanceReady', function(ev) { 
       var editor = ev.editor; 
      editor.setReadOnly(false); 
    }); 
}});