2013-11-12 3 views
0

В настоящее время я использую CKEditor, и у меня возникают проблемы с удалением панели инструментов, когда я нажимаю. В настоящее время я хочу создавать экземпляры 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> 

ответ

0

Попробуйте удалить JQuery на мыши и просто позволяют CKEditor обрабатывать его

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

ИЛИ

var abcEditor = CKEDITOR.inline('abc'); 
+0

Да, я знаю, что это работает, я фактически использовал решение, которое у меня было до этого. Вы можете прочитать это ниже – gsitu322

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"); 
     } 
Смежные вопросы