Мне нужно отключить или сделать readonly текстовую область tinymce во время выполнения.
Сделать readonly/disable tinymce textarea
Ответ 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')