2010-02-09 5 views
2

J'ai une page html avec une ou plusieurs textareas, chacune ayant un éditeur TinyMCE (ajouté en utilisant tinyMCE.init({mode : "textareas", etc...});) Au début, ils fonctionnent tous comme ils le devraient, non Sur la page se trouve également un bouton qui ajoute une nouvelle zone de texte à la page (en utilisant AJAX) Dans le gestionnaire de l'appel AJAX, j'ajoute le responsetext à un div sur la page, après quoi j'essaie d'ajouter un TinyMCE au nouvelle textfield utilisantL'ajout dynamique de TinyMCE-editor à textarea tue d'autres instances

tinyMCE.execCommand("mceAddControl", false, "text" + cnt); 

cnt est une sorte de décalage et "text" + cnt est unique pour chaque textfield.

Cela fonctionne bien, sauf que tous les éditeurs TinyMCE qui se trouvaient sur la page avant la nouvelle sont maintenant vides et ne répondent à aucune entrée (ni en tapant ni en cliquant sur l'un de leurs boutons). Si j'ajoute une autre zone de texte à la page, on aura un éditeur fonctionnel, et le précédent sera également tué.

J'ai essayé d'ajouter le TinyMCE aux zones de texte initiales séparément en utilisant tinyMCE.init({mode : "none", etc...}); et pour chaque zone de texte appelant tinyMCE.execCommand("mceAddControl", false, "text" + cnt);. Mais le résultat était le même.

J'ai aussi essayé de faire tinyMCE.init({...}) pour chaque nouvelle zone de texte, mais cela donne le même résultat.

S'il vous plaît aidez-moi, je suis de plus en plus frustré et désespéré ...

Répondre

2

Je sais quel était le problème. J'ai ajouté le responseText de l'appel AJAX qui génère les champs d'entrée à la div qui contenait déjà les autres champs d'entrée. C'était le problème. Je crée maintenant une nouvelle div dans laquelle je place les nouveaux champs d'entrée (donc chaque zone de texte qui a un petit éditeur de MCE est dans son propre div). Cela résout mon problème.

0

Je me souviens que j'avais un problème similaire une fois ... this thread devrait aider

+0

Merci pour votre réponse, mais le fil ne s'applique pas vraiment à mon problème. J'ai essayé maintenant de sauvegarder les données dans chaque éditeur, de placer le nouvel éditeur et de replacer les anciennes données dans les anciens éditeurs, mais ça ne marche pas non plus. Je ne peux rien faire avec les anciens éditeurs après que le nouveau soit sur la page. –

2

J'ai eu ce problème aussi, ce qui fixe pour moi:

Lorsque vous ajoutez chaque nouvelle dynamique textarea, il faut mceAddControl ajouté à ce après avoir été ajouté à l'écran. Ainsi, dans les mêmes js que annexe'es la nouvelle zone de texte pour tinymce je lance

$('.tinymce').each(function(){ 
    tinyMCE.execCommand('mceAddControl',false,$(this).attr('id')) 
    }); 

tinymce est la classe de mon

-2

pâte de tinymce textarea tout le code d'initialisation après $(wrapper).append('write your fields row div or tr code here'); // son fonctionne bien :)

tinyMCE.init({ 
    mode : "textareas", 
    theme : "advanced", 
     editor_selector : "mceEditor", 
     editor_deselector : "mceNoEditor", 
    theme_advanced_buttons1 : "code,bold,italic,underline,image,separator,strikethrough,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,undo,redo,link,unlink,|,tiny_mce_wiris_formulaEditor,tiny_mce_wiris_CAS,|,fullscreen,jbimages", 
    theme_advanced_buttons2 : "", 
    theme_advanced_buttons3 : "", 
    theme_advanced_toolbar_location : "top", 
    theme_advanced_toolbar_align : "left", 
    theme_advanced_statusbar_location : "bottom", 
    plugins : 'inlinepopups,tiny_mce_wiris,jbimages', 
    setup : function(ed) { 
     // Add a custom button 
     ed.addButton('mybutton', { 
      title : 'My button', 
      image : 'img/example.gif', 
      onclick : function() { 
       // Add you own code to execute something on click 
       ed.focus(); 
       ed.selection.setContent('Hello world!'); 
      } 
     }); 
    } 
});