CKEditor не может удалить панель инструментов, пока я не нажму на нее

0

В настоящее время я использую CKEditor, и у меня возникают проблемы с удалением панели инструментов при нажатии. В настоящее время я хочу создавать экземпляры CKEditor динамически, когда пользователи нажимают на него.

Однако проблема возникает, когда я пытаюсь щелкнуть, не нажимая на панель инструментов. Когда я пытаюсь щелкнуть мышью на панели инструментов, он остается там, и он не запускает мой код onBlur. Это только когда я нажимаю на кнопку на панели инструментов или нажимаю, а затем нажимаю обратно в текстовую область, она удалит панель инструментов и запустит мой код onBlur.

Вот небольшой фрагмент кода, который я написал для создания экземпляра при нажатии. Я делаю что-то неправильно здесь, или мне не хватает части кода фокуса?

    <html>
        <head>
            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
            <script src="ckeditor\ckeditor.js"></script>
            <script>
            $(document).ready(function(){
                CKEDITOR.disableAutoInline = true;

                $("#abc").on('click', function(){
                    var ck = CKEDITOR.inline(CKEDITOR.document.getById('abc'));
                });
            });

            </script>
        </head>

        <body>

            <div id="abc" contenteditable="true" >
                Edit this
            </div>
        </body>
    </html>
Теги:
ckeditor

2 ответа

0
Лучший ответ

Попробуйте удалить jquery при щелчке и просто разрешите ckeditor обрабатывать его

$(document).ready(function () {
    CKEDITOR.disableAutoInline = true;
    CKEDITOR.inline('abc');
 });

ИЛИ

var abcEditor = CKEDITOR.inline('abc');
  • 0
    Да, я знаю, что это работает, я фактически использовал решение, которое у меня было раньше. Вы можете прочитать это ниже
0

Поэтому вместо того, чтобы делать это нажатием, я сделал это так, чтобы при загрузке страницы он обнаружил все редактируемые области контента и создавал экземпляры ckeditor.

Первоначально я хотел использовать на клике, чтобы создать экземпляр динамически, поскольку я буду динамически заполнять вещи. Тем не менее, мне было проще просто создать экземпляр ckeditor при создании динамического содержимого.

Используя эту функцию, я могу создать новый экземпляр ckeditor при создании динамического содержимого, а также использовать функцию onblur для записи всего в мою базу данных.

Если у кого-нибудь есть какие-либо решения для получения необработанного html из ckediter, сообщите мне. Этот метод должен получить родительский элемент, а затем найти элемент и затем сохранить его, что для меня не звучит правильно. Поэтому, если у вас есть какие-либо предложения о том, как это сделать, я все открываю! благодарю!

        if(CKEDITOR.instances[this.id] == undefined){
            console.log("creating new instance");
            var ck = CKEDITOR.inline(CKEDITOR.document.getById(  this.id ));

            ck.on('blur', function(e){
                var id = e.editor.name;
                var html = $("#"+id).parent()[0].outerHTML;
                console.log(html);
                $.ajax({
                    type: 'POST',
                    url: "saveHtml",
                    data: { content : html}
                }).done(function(data) {
                    console.log(data);
                    console.log("finished sending data");
                });
            });
        }else{
            console.log("no instance created");
        }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню