Как отключить CKeditor с помощью jQuery - PullRequest
11 голосов
/ 23 июня 2011

Я использую CKEditor в своем веб-приложении и мне нужно отключить / включить редактор из javascript.Я знаю, что есть опция с именем readOnly , но я не знаю, как установить ее из jQuery.

Кто-нибудь знает, как отключить и включить CKEditor с помощью jQuery, пожалуйста?

Ответы [ 9 ]

22 голосов
/ 01 апреля 2013

Самый простой способ:

В отключить CKEditor:

CKEDITOR.instances['TEXTAREA_NAME'].setReadOnly(true);

В включить CKEditor:

CKEDITOR.instances['TEXTAREA_NAME'].setReadOnly(false);
10 голосов
/ 16 июня 2012

Я использую его в codeigniter. В файле просмотра я использую его так:

<script type="text/javascript">
    $(document).ready(function() {
        CKEDITOR.config.readOnly = true;
    });
</script>
4 голосов
/ 14 июля 2011

Я предполагаю, что вы используете адаптер JQuery CKE , поэтому вы можете использовать функцию .ckeditorGet() jQuery для быстрого доступа к API CKEditor.

Чтобы переключить работающий экземпляр редактора только для чтенияВ режиме используйте функцию редактора setReadOnly:

$( _your_textarea_ ).ckeditorGet().setReadOnly();

Чтобы переключить его обратно в режим записи:

.setReadOnly( false );

Вы можететакже используйте readOnly значение конфигурации, когда вы запускаете редактор, чтобы сразу запустить его в режиме только для чтения:

$( _your_textarea_ ).ckeditor({
    readOnly: true
});
2 голосов
/ 13 декабря 2012

Если вы включили адаптер jQuery, следующий код должен сделать его доступным только для чтения. Вы можете взять адаптер jQuery из примера, если он еще не включен.

<div class="wrapper">
    <form id="myfrm" name="myfrm" class="myfrm" action="" method="post">
        <textarea id="myeditor" name="myeditor"></textarea>
        <input type="submit" id="submit" name="submit" value="Submit" />
    </form>
</div>​

и JS

$(document).ready(function(e) {
    var myeditor = $('#myeditor');
    myeditor.ckeditor();
    myeditor.ckeditorGet().config.resize_enabled = false;
    myeditor.ckeditorGet().config.height = 200;
    myeditor.ckeditorGet().config.readOnly = true;
});

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

$(document).ready(function(){
    //put ckeditor initialization (the above) here.
    $('#myselect').change(function(){
         var x = $(this);
         if(x.val()=='enable'){
             myeditor.removeAttr('disabled');           
         }else if(x.val()=='disable'){
             myeditor.attr('disabled','disabled');            
         }
         myeditor.ckeditorGet().destroy();
         myeditor.ckeditor();
    });
});

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

JSFiddle Пример для отражения запроса OP

1 голос
/ 24 июня 2011

От: cksource форумов

// Temporary workaround for providing editor 'read-only' toggling functionality. 
( function()
{
   var cancelEvent = function( evt )
      {
         evt.cancel();
      };

   CKEDITOR.editor.prototype.readOnly = function( isReadOnly )
   {
      // Turn off contentEditable.
      this.document.$.body.disabled = isReadOnly;
      CKEDITOR.env.ie ? this.document.$.body.contentEditable = !isReadOnly
      : this.document.$.designMode = isReadOnly ? "off" : "on";

      // Prevent key handling.
      this[ isReadOnly ? 'on' : 'removeListener' ]( 'key', cancelEvent, null, null, 0 );
      this[ isReadOnly ? 'on' : 'removeListener' ]( 'selectionChange', cancelEvent, null, null, 0 );

      // Disable all commands in wysiwyg mode.
      var command,
         commands = this._.commands,
         mode = this.mode;

      for ( var name in commands )
      {
         command = commands[ name ];
         isReadOnly ? command.disable() : command[ command.modes[ mode ] ? 'enable' : 'disable' ]();
         this[ isReadOnly ? 'on' : 'removeListener' ]( 'state', cancelEvent, null, null, 0 );
      }
   }
} )();

И использование:

// Turn CKEditor into 'ready-only' mode or vice versa.
CKEDITOR.instances.editor1.readOnly( true );
CKEDITOR.instances.editor1.readOnly( false );
1 голос
/ 23 июня 2011

Я думаю, что вы не прочитали эту документацию должным образом ... она говорит, что Ckeditor имеет какое-то имя экземпляра, и с этим именем экземпляра в теге набора страниц InstanceNameOfCkEditor.config.readOnly = true;

http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#setReadOnly

0 голосов
/ 10 августа 2017

Я добавляю отключенное к текстовой области, что кажется самым простым способом.

<div class="col-md-12">
    <h3>HTML CONTENT</h3>
    <textarea name="editor1" disabled></textarea>
    <script>
        CKEDITOR.replace('editor1');
    </script>
 </div>
0 голосов
/ 24 января 2017

вы пытаетесь это лучшее решение

 var existingEditor = CKEDITOR.instances && CKEDITOR.instances[element.id];
            try {
                if (existingEditor && typeof(existingEditor) !== "undefined" && typeof(existingEditor.setReadOnly) !== "undefined") {
                    if (el.prop("disabled")) {
                        existingEditor.setReadOnly(true);
                    } else {
                        existingEditor.setReadOnly(false);
                    }
                }
            } catch (ex) {
                //do nothing
            }
0 голосов
/ 23 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...