Сокрытие TinyMCE с помощью jQuery - PullRequest
7 голосов
/ 24 мая 2011

У меня есть текстовая область TinyMCE внутри #container

Когда я использую $('#container').hide(), а затем $('#container').show(), tinyMCE бросает:

Не удается прочитать свойство 'selection' изundefined

Я использую плагин jquery, вот как я его настроил:

$('#container textarea').tinymce({ /* options */ });

Что мне делать по-другому?

Ответы [ 4 ]

10 голосов
/ 25 мая 2011

Правильная команда для использования здесь:

// editor_id is the id of your textarea and 
// tinymce will use this id to uniquely identify this editor instance
editor_id = $("#container textarea").attr('id');
tinymce.get(editor_id).hide();  

, чтобы снова сделать ее видимой, используйте

tinymce.get(editor_id).show();
1 голос
/ 31 октября 2016

Этот вопрос касается скрытия и отображения редактора tinymce, но если кто-то пришел сюда с удалением и повторным добавлением редактора tinymce без ошибок, тогда моё решение может помочь им.

Чтобы удалить существующий редактор tinymce и добавить новые потребностиоформление массива tinymce.EditorManager.editors.Это решение работает в обоих случаях: 1. Если у вас есть только один редактор, и вы хотите удалить и добавить его снова.2. Если у вас несколько редакторов, и вы хотите удалить какой-то специальный редактор и добавить его снова.

console.log(tinymce.EditorManager.editors);

Это даст вам представление о массиве и точном индексе нужного вам редактора, который вы хотите удалить.,Например, один пример вывода вышеуказанной консоли может быть:

Array[2]
0:B
1:B
length:2
textarea-1:B
textarea-2:B
_proto_Array[0]

Это вывод консоли, когда у меня есть два редактора tinymce на textareas: # textarea-1 и # textarea-2 Предположим, я хочуудалите # textarea-2 и повторно добавьте его, тогда это можно сделать следующим образом:

tinymce.EditorManager.editors.splice(1, 1);//removing second element in array.
delete tinymce.EditorManager.editors['textarea-2'];//deleting respective textarea id from array

Затем вы можете добавить его снова, просто используя init:

tinymce.init({
    selector:'#ts-textarea-2'
});

Если у вас есть толькоодна текстовая область, связанная с редактором tinymce, позволяет сказать: # textarea-1, и вы хотите удалить и повторно инициализировать его, затем вы можете просто очистить tinymce.EditorManager.editors по:

tinymce.EditorManager.editors = [];

И затем вы можете добавить, используякоманда init, как описано выше.Работал у меня без ошибок.

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

0 голосов
/ 25 мая 2011

Видимо это была анимация.если я показываю () / hide (), то все в порядке, но когда я пытаюсь анимировать в tinyMCE, после завершения анимации возникает проблема, возможно, при попытке установить параметры, когда отображение текстовой области не равно.

0 голосов
/ 24 мая 2011

Вместо того, чтобы скрывать это, попробуйте отправить его за пределы экрана - что-то вроде:

$('#container').css('left', '-1000px');

EDIT / UPDATE:

Вы также можете попробовать удалить TinyMCE из текстовой области, прежде чем скрывать () контейнер, а затем вернуть его после того, как вы отобразите (). Но вам нужно дать текстовой области #ID:

//To Enable
tinyMCE.execCommand('mceAddControl', false, $("#container textarea").attr('id'));
//To Disable
tinyMCE.execCommand('mceRemoveControl', false, $("#container textarea").attr('id'));
...