как отключить редактор tinymce
Я хочу отключить редактор tinymce с помощью Javascript. На самом деле, у меня есть два переключателя: 1) On
& 2) Off
.
когда пользователь выбирает Off
переключатель, мой редактор tinymce должен быть readonly/disabled
и когда пользователь выбирает On
переключатель, мой редактор tinymce должен быть enabled
.
как я могу этого достичь?
отредактировано: - (поскольку он не работает в IE8)
tinyMCE.init({
force_p_newlines : false,
force_br_newlines : false,
forced_root_block : false,
convert_newlines_to_brs: false,
// Not to add br elements.
remove_linebreaks : true,
mode : "textareas",
theme : "advanced",
plugins : "safari",
convert_urls : false,
width : "560",
height : "15",
theme_advanced_buttons1 : "fontselect,fontsizeselect, separator, bold,italic,underline,separator,forecolor,backcolor,justifyleft,justifycenter,justifyright,justifyfull",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left", extended_valid_elements : "a[name|href|target|title|onclick],img[class|src| border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name], hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]"
});
этот код используется для отключения:
function tinymce_state(id, disable){
var state = (disable==true)? 'Off' : 'On'
tinymce.get(id).getDoc().designMode = state;
tinymce.get(id).controlManager.get('fontselect').setDisabled(disable);
tinymce.get(id).controlManager.get('fontsizeselect').setDisabled(disable);
tinymce.get(id).controlManager.get('bold').setDisabled(disable);
tinymce.get(id).controlManager.get('italic').setDisabled(disable);
tinymce.get(id).controlManager.get('underline').setDisabled(disable);
tinymce.get(id).controlManager.get('forecolor').setDisabled(disable);
tinymce.get(id).controlManager.get('backcolor').setDisabled(disable);
tinymce.get(id).controlManager.get('justifyleft').setDisabled(disable);
tinymce.get(id).controlManager.get('justifycenter').setDisabled(disable);
tinymce.get(id).controlManager.get('justifyright').setDisabled(disable);
tinymce.get(id).controlManager.get('justifyfull').setDisabled(disable);
}
3 ответов
для блокировки ввода в редакторе можно использовать следующее:
// blockeditor input
tinymce.get('editor_id').getDoc().designMode = 'Off'; // switches editable off
// turn it on again
tinymce.get('editor_id').getDoc().designMode = 'On'; // switches editable on
вам все равно нужно найти способ заблокировать интерфейс tinymce. Вы можете деактивировать каждый загруженный элемент управления (в функции init), используя строку для каждого из них
// example control bold
tinymce.get('editor_id').controlManager.get('bold').setDisabled(true);
// turn it on again
tinymce.get('editor_id').controlManager.get('bold').setDisabled(false);
EDIT:
вы можете изменить свойство contenteditable вашего тела rtes iframe. Недостатком будет то, что вам придется отключить TinyMCE UI (кнопки) отдельно
// disable contenteditable
tinymce.get('editor_id').getBody().setAttribute('contenteditable', 'false');
// enable contenteditable
tinymce.get('editor_id').getBody().setAttribute('contenteditable', 'true');
по какой-то причине коллекция редакторов имеет два типа ID, числовой ID (0,1, ... n) и Альфа-идентификатор (Testing1, testing2,... xyx) команды в фрагменте кода работают только с идентификатором на основе aplha, например "Testing1"
У меня есть двенадцать редакторов tinyMCE версии 4.1.5 в моем проекте и я могу отключить их все с помощью этого кода:
for (editor_id in tinyMCE.editors) {
if (editor_id.length > 2) { //there are twelve editors in my project so ignore two-digit IDs
tinyMCE.editors[editor_id].getBody().setAttribute('readonly', '1');
tinymce.EditorManager.execCommand('mceRemoveControl', true, editor_id);
tinymce.EditorManager.execCommand('mceRemoveEditor', true, editor_id);
tinymce.EditorManager.execCommand('mceAddControl', true, editor_id);
tinymce.EditorManager.execCommand('mceAddEditor', true, editor_id);
}
}
этот сайт помог мне разобраться: http://jeromejaglale.com/doc/javascript/tinymce_jquery_ajax_form
вы можете использовать в 3.x опция
editor_deselector : "no_mce",
отключено (поэтому дайте textarea класс css no_mce). Например, вы можете переключить класс CSS с помощью jQuery.
в 4.X вы можете использовать опцию
селектор: 'textarea.не(.no_mce)'
надеюсь, это поможет.
(Oviously вы можете изменить класс CSS на все, что хотите)