Подтвердить что ты не робот

Сделать readonly/disable tinymce textarea

Мне нужно отключить или сделать readonly текстовую область tinymce во время выполнения.

4b9b3361

Ответ 1

Используйте параметр конфигурации readonly

tinyMCE.init({
        ...
        theme : "advanced",
        readonly : 1
});

Вот ссылка на демонстрацию.

Обновление: Что вы можете сделать, чтобы пользователи не могли редактировать контент в редакторе, - это установить атрибут contenteditable для тела iframe iframe в false:

tinymce.activeEditor.getBody().setAttribute('contenteditable', false);

Ответ 2

В версии 4.3.x вы можете использовать код ниже для режима readonly

tinymce.activeEditor.setMode('readonly');

и для режима разработки:

tinymce.activeEditor.setMode('design'); 

Ответ 3

ЕСЛИ у вас только один редактор, это работает:

tinymce.activeEditor.getBody().setAttribute('contenteditable', false);

Если у вас несколько редакторов, вы должны выбрать их по идентификатору текстового поля:

tinyMCE.get('textarea_id').getBody().setAttribute('contenteditable', false);

Ответ 4

Thariama решение установит все текстовые поля TinyMCE на странице только для чтения.

Лучшее решение, которое я нашел, было опубликовано от Magnar Myrtveit, которое будет устанавливать поля только для чтения, которые имеют атрибут readonly. Вот код:

tinyMCE.init({
    ...
    setup: function(ed) {
        if ($('#'+ed.id).prop('readonly')) {
            ed.settings.readonly = true;
        }
    }
});

Ответ 5

Для отключения вы можете вызвать эту команду:

tinymce.EditorManager.execCommand('mceToggleEditor', true, tinymceId);

И чтобы снова включить редактор, вы снова можете вызвать эту команду.

Команда

' mceToggleEditor' включает или выключает режим WYSIWYG, отображая или скрывая экземпляр textarea и editor. Это не то же самое, что mceAddControl или mceRemoveControl, потому что экземпляр все еще существует и не инициализирован, поэтому этот метод выполняется быстрее.

Ссылка для команды: http://archive.tinymce.com/wiki.php/TinyMCE3x:Command_identifiers

Ответ 6

вы можете использовать

this.getBody().setAttribute('contenteditable', false);

взгляните на полное решение, моя сторона сервера Asp.net MVC

 setup: function (ed) {
        ed.on('init', function () {
            this.execCommand("fontSize", false, "17px");
            $("html,body").scrollTop(0);
            @if (ViewBag.desableEdit != null && ViewBag.desableEdit == true)
            {
                <text>
                    this.getBody().setAttribute('contenteditable', false);
                </text>
            }

        });

anather способ сделать это, если у вас есть server side condition, который будет удален в возвращенном HTML

 tinymce.init({
    selector: ... ,
    ....
    @if (ViewBag.desableEditExseptExportNumber != null && ViewBag.desableEditExseptExportNumber == true)
    {
         <text>
              readonly: 1,
         </text>
    }
    language: 'ar',
    ....});

Ответ 7

Возможно, эта строка кода помогает другим браузерам использовать iframes.

tinymce.activeEditor.getBody().contenteditable = false

Привет!

Ответ 8

Я пытаюсь использовать Только для чтения: 1 когда я его использую, панель инструментов исчезает.

как использовать

tinymce.activeEditor.getBody(). setAttribute ('contenteditable', false);

Ответ 9

Вы можете увидеть этот ответ здесь: @rioted: fooobar.com/questions/168119/....

Я использовал его для решения этого вопроса:

tinymce.settings = $.extend(tinymce.settings, { readonly: 1 });
tinymce.EditorManager.editors.forEach(function (editor) {
    tinymce.EditorManager.execCommand('mceRemoveEditor', false, editor.id);
    //tinymce.EditorManager.editors = [];
    tinymce.EditorManager.execCommand('mceAddEditor', false, editor.id);
});

Ответ 10

Это работает для ASP.NET MVC Razor

readonly: @(Model.Readonly ? "true" : "false")

при инициализации tinyMCE:

tinymce.init({/* put readonly setting here */});

Ответ 11

Для последней версии 5.x используйте

editor.mode.set('readonly')

и

editor.mode.set('design')