Bonjour à tous,
J'ai un petit souci sur mon projet. Sur une des pages, je liste des activités : chaque activité est une div contenantt différents champs (2 selects, 3 inputs et 1 textarea).
Il est possible de déplacer chaque activité, d'en ajotuer et d'en supprimer. Pour une meilleur expérience, l'ajout d'une nouvelle activité se fait en jquery comme suit : je clone le DOM d'une activité et je l'ajoute dans la liste.
Le problème est le suivant : quand j'ajoute une activité, je clone son DOM donc, je clone donc aussi la balise tinymce avec l'éditeur du DOM source. Comment faire pour réinitialiser tinymce "à la volée" sur le DOM ajouté en supprimant bien le précédent ?
J'ai essayé 2-3 choses déjà :
Bref, j'ai besoin d'un coup de main! :)
Merci pour votre aide,
Cordialement
J'ai trouvé une solution, je sais pas si c'est la plus "jolie" et la plus optimale, mais cela marche.
Voici le code de ma fonction qui initiaise tinymce sur un élément content plusieurs éléments dont un textarea pour tinymce :
jQuery.fn.extend({
initializeEditor: function(srcElement) {
// textarea cible pour tinyMCE
var editor = $(this).find('textarea');
// l'élément courant étant issu d'un clone() avec jQuery, on teste si une initialization de tinyMCE existe déjà et on la supprime
var existingEditor = $(this).find('.mce-tinymce');
if (existingEditor.length > 0)
{
existingEditor.remove();
editor.removeAttr('id');
editor.attr('style', 'display:block;');
}
// initialisation de tinyMCE
editor.tinymce(EDITOR_OPTIONS);
// clone du contenu de l'élément source s'il y en a un
if (typeof srcElement != 'undefined')
{
var srcId = srcElement.find('textarea').attr('id');
var editorId = editor.attr('id');
tinyMCE.get(editorId).setContent(tinyMCE.get(srcId).getContent());
}
return this;
}
});