web-dev-qa-db-fra.com

Lors de l'utilisation de javascript pour ajouter dynamiquement une zone de texte, comment puis-je l'afficher en tant qu'éditeur tinyMCE (sous wordpress)?

J'ai un plugin qui permet à l'utilisateur d'ajouter dynamiquement des sections qui ont besoin de l'éditeur tinyMCE. JQuery clone une div et la place dans un conteneur. Une des zones de saisie est une zone de texte configurée comme suit:

<textarea name="sectionContent_1" id="sectionContent_1"></textarea>

Je dois remplacer la zone de texte par l'éditeur tinyMCE.

J'ai regardé:

Comment charger wp_editor () via AJAX/jQuery et utilisez wordpress wp_editor dans dynamic/ajax html

Ni l'un ni l'autre ne semble fonctionner pour nous

J'ai essayé ceci à l'intérieur du déclencheur qui appelle à ajouter la section textarea:

$(this).parent().find('.sectionOptions').html(ctHolder);

var textAreaID = 'sectionContent_'+sectionID;

tinyMCE.execCommand('mceRemoveEditor', true, textAreaID);
tinyMCE.execCommand('mceAddControl', false, textAreaID);

En cela, j'ajoute les données clonées (ctHolder) au .sectionOptions en définissant l'ID de la zone de texte, en réinitialisant l'éditeur sur l'ID, puis en ajoutant le contrôle à l'ID ... cela ne fonctionne pas, mais semble être la suggestion la plus courante.

3
dcp3450
tinymce.remove();
tinymce.init();

Ça marche bien!

1

Cela a fait le tour:

var textAreaID = 'sectionContent_' + sectionID;
$(this).parent()
    .find('.sectionOptions')
    .html(ctHolder).ready(
        function() {
            tinyMCE.execCommand('mceAddEditor', false, textAreaID); 
        }
    );

Wordpress 3.9 utilise tinyMCE 4.x et "mceAddControl" a été remplacé par "mceAddEditor". En outre, j’ai placé l’appel dans une fonction prête pour que jquery n’exécute pas tinyMCE tant qu’elle n’a pas chargé la zone de texte sur le dom.

0
dcp3450