2012-08-03 5 views
16

Ho una area di testo e sto usando tinyMCE su quella textarea.Imposta il valore textarea con javascript dopo l'inizializzazione di TinyMCE

Quello che sto facendo in realtà è che quando si apre la pagina, sto compilando la textarea con del testo, dopodiché sto inizializzando il tinyMCE.

Il problema è quando sto cercando di modificare il valore dell'area di testo dopo l'inizializzazione di tinyMCE, quindi non succede nulla.

Ecco un esempio.

  1. Creazione del textarea:

    <textarea style="width: 95%;" name="title" id="title"></textarea> 
    
  2. popolamento textarea:

    $('#title').html("someText"); 
    
  3. inizializzazione TinyMCE

    tinyMCE.init({ 
         // General options 
         mode : "specific_textareas", 
         theme : "advanced", 
         width: "100%", 
         plugins : "pagebreak,paste,fullscreen,visualchars", 
    
         // Theme options 
         theme_advanced_buttons1 : "code,|,bold,italic,underline,|,sub,sup,|,charmap,|,fullscreen,|,bullist,numlist,|,pasteword", 
         theme_advanced_buttons2 :"", 
         theme_advanced_buttons3 :"", 
         theme_advanced_buttons4 :"", 
         theme_advanced_toolbar_location : "top", 
         theme_advanced_toolbar_align : "left", 
         theme_advanced_statusbar_location : "bottom", 
         valid_elements : "i,sub,sup", 
         invalid_elements : "p, script", 
         editor_deselector : "mceOthers" 
        }); 
    
  4. vorrei chan ge il contenuto del TextView (ma non funziona)

Ho provato ad utilizzare la stessa di prima init TinyMCE

$('#title').html("someModifiedText"); // does not work 

Ho anche provato a rimuovere TinyMCE:

if(tinyMCE.getInstanceById('title')) 
    removeTinyMCE("title"); 

Con

function removeTinyMCE (dialogName) { 
    tinyMCE.execCommand('mceFocus', false, dialogName); 
    tinyMCE.execCommand('mceRemoveControl', false, dialogName); 

}

E hanno regalato per il riutilizzo:

$('#title').html("someModifiedText"); // does not work 

Io sono a corto di idee ... La ringrazio molto per il vostro aiuto ....

risposta

23

problema qui è che non si vede nulla, se si inserisci testo o html nella tua textarea. La tua area di testo viene nascosta quando viene inizializzato tinymce. Quello che vedi allora è un iframe contenteditable, che è usato per modificare e disegnare il contenuto. Ci sono diversi eventi che causeranno a tinymce di scrivere il suo contenuto sull'elemento sorgente HTML dell'editor (nel tuo caso la tua textarea).

Se si desidera impostare il contenuto del redattore (che è visibile) sarà necessario chiamare qualcosa come

tinymce.get('title').setContent('<p>This is my new content!</p>'); 

Si può anche acces gli elementi DOM direttamente utilizzando il seguente

tinymce.get('title').getBody().innerHTML = '<p>This is my new content!</p>'; 

o jQuery

$(tinymce.get('title').getBody()).html('<p>This is my new content!</p>'); 
+0

Grazie ancora Thariama, sto geting un errore qui: tinymce.get ('title') non è definito –

+0

riferirsi a [this] (http://www.tinymce.com/wiki.php/API3:method.tinymce.Editor.setContent). – Prasanth

+0

@goldenparrot, grazie, l'ho già provato, ma ho ancora lo stesso problema. –

0

Funziona per me.Basta posizionarlo all'interno del vostro codice html invece di andare TinyMCE

<textarea> html CONTENT</textarea> 
3

Semplicemente questo funziona per me

$("#description").val(content); 
+3

Funziona per la versione 3, ma non nella versione 4. – Sergi

6

È possibile utilizzare i tinyMCE.activeEditor.setContent('<span>some</span> html');

Check this Answer

+0

Se ritieni che questa domanda sia duplicata, dovrebbe essere contrassegnata come tale. Per favore non postare link ad altre domande di Overflow dello Stack come risposta. – JAL

+0

scusa non ho notato il post dell'utente stesso. grazie per le informazioni. –

+0

ottima soluzione !! –