Экземпляры TinyMCE в jquery сортируются - PullRequest
15 голосов
/ 13 октября 2010

Я в замешательстве и разочарован, поэтому пришло время обратиться за помощью.Я много гуглил, но пока не нашел решения, которое бы работало на меня.

У меня есть целая куча div, которые можно отсортировать с помощью сортировки Jquery, некоторые div содержат экземпляр TinyMCE.Это нормально, пока вы не попытаетесь переместить div, который содержит экземпляр TinyMCE - когда вы делаете это, TinyMCE, кажется, обновляет себя и создает новый экземпляр, который затем теряет данные и т. Д. И тогда вся страница разрывается, поскольку JavaScript больше не работаетработает :).В это время я получаю ошибки конструктора javascript и т. Д. В Firebug.

Я решил, что лучший способ - это когда div начинает перетаскиваться, удаляя tinymce из текстовой области и когда он помещается в новую позициювставьте tinymce обратно.

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

Примечание. TinyMCE автоматически добавляется ко всем моим текстовым областям в системе, которую я использую, поэтому стараюсь не связываться с TinyMCE.

В приведенном ниже коде я просто нацеливаюсь на определенную область текстаid для тестирования.

$cols.sortable({
                            cursor: 'move',
                            revert: true,
                            opacity: 0.6,
                            placeholder: 'widgetplaceholder',
                            forcePlaceholderSize: true,
                            connectWith: cols,
                            zIndex:9000,
                            cancel: ".collapsable_box_editpanel_groups, .collapsable_box_content",
                            start: function(e, ui) {
                                     // removes tinymce ok from textarea
                                     tinyMCE.execCommand( 'mceRemoveControl', false, 'textarea1' );

                            },
                            stop: function(e,ui) {
                                    // breaks here - constructor error
                                    tinyMCE.execCommand( 'mceAddControl', true, 'textarea1' );
                                    $(this).sortable( "refresh" );
                            }
                    });

У кого-нибудь еще есть другие решения?Если вам нужна дополнительная информация, пожалуйста, дайте мне:)

Ответы [ 11 ]

0 голосов
/ 06 ноября 2014

У меня есть динамическая форма с несколькими абзацами, которые можно редактировать с помощью TinyMCE. Чтобы разрешить повторную сортировку абзацев, я добавил кнопки, которые перемещают текстовые области вверх и вниз.

Мне удалось заставить его работать, используя alt = "textareaid" на кнопке, которая перемещает текстовую область вверх или вниз, и используя эту текстовую область для команд mceRemoveEditor и mceAddEditor. Текстовая область должна быть в div с class = "textarea_container".

$('.move_textarea_up').click(function(){
    var tinymceid= $(this).attr("alt");
    tinyMCE.execCommand('mceRemoveEditor', false, tinymceid);
    $(this).closest('div.textarea_container').insertBefore($(this).closest('div.textarea_container').prev());
    tinyMCE.execCommand('mceAddEditor', false, tinymceid);
}); 
$('.move_textarea_down').click(function(){
    var tinymceid= $(this).attr("alt");
    tinyMCE.execCommand('mceRemoveEditor', false, tinymceid);
    $(this).closest('div.textarea_container').insertAfter($(this).closest('div.textarea_container').next());
    tinyMCE.execCommand('mceAddEditor', false, tinymceid);
});
...