как отключить редактор tinymce - PullRequest
7 голосов
/ 28 марта 2011

Я хочу отключить редактор tinymce, используя Javascript.На самом деле, у меня есть две радиокнопки: 1) On & 2) Off.

Когда пользователь выбирает радиокнопку Off, мой редактор оттенков должен иметь значение 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 ]

14 голосов
/ 28 марта 2011

Вы можете использовать следующее для блокировки ввода в редакторе:

// 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);

РЕДАКТИРОВАТЬ:

Вы можете изменить contenteditableсобственность вашего тела.Недостатком будет то, что вам придется отключить пользовательский интерфейс tinymce (кнопки) по отдельности

// disable contenteditable
tinymce.get('editor_id').getBody().setAttribute('contenteditable', 'false');

// enable contenteditable
tinymce.get('editor_id').getBody().setAttribute('contenteditable', 'true');
2 голосов
/ 14 ноября 2014

По какой-то причине коллекция редакторов имеет два типа идентификатора: числовой идентификатор (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

0 голосов
/ 03 декабря 2014

Вы можете использовать в 3.x опцию

editor_deselector: "no_mce",

отключено (поэтому присвойте текстовой области класс css no_mce). Например, вы можете переключать класс CSS с помощью jQuery.

В 4.x вы можете использовать опцию

селектор: 'textarea.not (.no_mce)'

Надеюсь, это поможет.

(Очевидно, вы можете изменить класс CSS на любой другой)

...