2010-09-26 22 views

risposta

-22

Prima di tutto si dovrebbe includere ckeditor e sceneggiatura connettore jquery nella tua pagina,

quindi creare una textarea

<textarea name="content" class="editor" id="ms_editor"></textarea> 

allegare ckeditor per l'area di testo, nel mio progetto che uso qualcosa di simile:

$('textarea.editor').ckeditor(function() { 
     }, { toolbar : [ 
      ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'], 
      ['Undo','Redo'], 
      ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'], 
      ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'], 
      ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], 
      ['Link','Unlink','Anchor', 'Image', 'Smiley'], 
      ['Table','HorizontalRule','SpecialChar'], 
      ['Styles','BGColor'] 
     ], toolbarCanCollapse:false, height: '300px', scayt_sLang: 'pt_PT', uiColor : '#EBEBEB' }); 

sulla presentare ottenere il contenuto utilizzando:

var content = $('textarea.editor').val(); 

Questo è tutto! :)

+0

Grazie per la risposta, ma io non postback della pagina e questo è il motivo per cui non riesco a ottenere il contenuto del ckeditor. Il mio problema è come posso ottenere il contenuto di ckeditor senza postback utilizzando jquery. – pegasus

+3

La risposta qui sotto è molto meglio. –

+39

È la prima volta che vedo una risposta così negativa come quella accettata. Incredibile. –

174

utilizzare la chiamata CKEditor.editor.getData() sull'istanza. Vale a dire:

HTML

<textarea id="my-editor"> 
<input id="send" type="button" value="Send"> 

JS per CKEditor 4.0.x

$('#send').click(function() { 
    var value = CKEDITOR.instances['DOM-ID-HERE'].getData() 
    // send your ajax request with value 
    // profit! 
}); 

JS per CKEditor 3.6.x

var editor = CKEDITOR.editor.replace('my-editor'); 

$('#send').click(function() { 
    var value = editor.getData(); 
    // send your ajax request with value 
    // profit! 
}); 
+0

Questo ha funzionato incredibilmente. Non riuscivo a capire come e finalmente trovato questo! Grazie! – Reaction21

+6

questa dovrebbe essere la risposta accettata, non quella sopra – ianace

+3

Questo non sembra funzionare con l'ultima versione di CKEditor (4.0.2 - 6 Mar 2013). La risposta seguente tuttavia: 'CKEDITOR.instances ['DOM-ID-HERE']. GetData();' – Laoujin

62

Se don' t tenere un riferimento al redattore, come nella risposta di Aeon, puoi anche tu se la forma:

var value = CKEDITOR.instances['my-editor'].getData(); 
+4

+1 a voi signore. Anni spesi cercano come ottenere i dati da 1 istanza di CKEDITOR (dove sono istanziate le istanze X tramite la classe "editor"). Terminato con: 'var strData = CKEDITOR.instances ['editor _' + intCounter] .getData();' - nel caso sia utile a chiunque altro. –

0


aggiungo ckeditor aggiungendo DLL in Toolbox. Codice
html:

<CKEditor:CKEditorControl ID="editor1" runat="server" 
      BasePath="ckeditor" ContentsCss="ckeditor/contents.css" 
      Height="250px" 
      TemplatesFiles="ckeditor/themes/default/theme.js" FilebrowserBrowseUrl="ckeditor/plugins/FileManager/index.html" 
      FilebrowserFlashBrowseUrl="ckeditor/plugins/FileManager/index.html" FilebrowserFlashUploadUrl="ckeditor/plugins/FileManager/index.html" 
      FilebrowserImageBrowseLinkUrl="ckeditor/plugins/FileManager/index.html" FilebrowserImageBrowseUrl="ckeditor/plugins/FileManager/index.html" 
      FilebrowserImageUploadUrl="ckeditor/plugins/FileManager/index.html" 
      FilebrowserUploadUrl="ckeditor/plugins/FileManager/index.html" BackColor="#FF0066" 
        DialogButtonsOrder="Rtl" 
        FontNames="B Yekan;B Yekan,tahoma;Arial/Arial, Helvetica, sans-serif; Comic Sans MS/Comic Sans MS, cursive; Courier New/Courier New, Courier, monospace; Georgia/Georgia, serif; Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif; Tahoma/Tahoma, Geneva, sans-serif; Times New Roman/Times New Roman, Times, serif; Trebuchet MS/Trebuchet MS, Helvetica, sans-serif; Verdana/Verdana, Geneva, sans-serif" 
        ResizeDir="Vertical" ResizeMinHeight="350" UIColor="#CACACA">dhd fdh</CKEditor:CKEditorControl> 

per ottenere i dati di esso.
jquery:

var editor = $('textarea iframe html body').html(); 
    alert(editor); 
+0

ciao, per me tornare indietro 'undefined'. Aggiunto dal file dll. –

6

stavo avendo problemi con il getData() non funziona ogni volta in particolare quando si tratta di Ajax in diretta.

stato in grado di ottenere intorno ad esso eseguendo:

for(var instanceName in CKEDITOR.instances){ 
    CKEDITOR.instances[instanceName].updateElement(); 
} 

Poi utilizzare jQuery per ottenere il valore del textarea.

2

Grazie a John Magnolia. Questa è la mia funzione postForm che sto usando nei miei progetti Symfony e ora funziona bene con CK Editor.

function postForm($form, callback) 
{ 
    // Get all form values 
    var values = {}; 
    var fields = {}; 

    for(var instanceName in CKEDITOR.instances){ 
     CKEDITOR.instances[instanceName].updateElement(); 
    } 

    $.each($form.serializeArray(), function(i, field) { 
     values[field.name] = field.value; 
    }); 

    // Throw the form values to the server! 
    $.ajax({ 
     type  : $form.attr('method'), 
     url   : $form.attr('action'), 
     data  : values, 
     success  : function(data) { 
      callback(data); 
     } 
    }); 
6
var value = CKEDITOR.instances['YourInstanceName'].getData() 
alert(value); 

Sostituire YourInstanceName con il nome dell'istanza e si ottengono i risultati desiderati.

0

Penso che sarà meglio, solo serializzare il modulo per jQuery e applausi ...

<form id="ajxForm"> 
    <!-- input elments here --> 
    <textarea id="ck-editor" name="ck-editor" required></textarea> 
    <input name="text" id="text" type="text" required> 
<form> 

e in Javascript sezione

CKEDITOR.replace('ck-editor', { 
    extraPlugins: 'sourcedialog', 
    removePlugins: 'sourcearea' 
}); 

$("form#ajxForm").submit(function(e) { 
    e.preventDefault(); 
    var data = $(this).serialize(); 
    if (data != '') { 
    $.ajax({ 
     url: 'post.php', 
     cache: false, 
     type: 'POST', 
     data: data, 
     success: function(e) { 
     setTimeout(function() { 
      alert(e); 
     }, 6500); 
     } 
    }); 
    } 
    return; 
}); 
1

Ora che jQuery adapter esiste, questa risposta deve essere aggiornato:

Supponi di aver avviato l'editor con $('.ckeditor').ckeditor(opt) Quindi si ottiene il valore con $('.ckeditor').val()

+0

Al momento della domanda, non credo che esistesse l'adattatore jQuery. Grazie per la risposta, è sicuramente un modo valido per farlo anche in questi giorni. – Aeon

+0

Certo, ho aggiornato l'intro della mia risposta di conseguenza – Benj

+1

Questo non fa nulla per me. Risultato stringa vuota. – Martijn

0

versione 4.6

CKEDITOR.instances.editor.getData() 
+2

mentre la risposta può essere accurata, è difficile capire perché questa sia la risposta. Si prega di aggiungere una breve spiegazione a beneficio della comunità – ochi

+1

Benvenuti allo stack overflow :-) Si prega di guardare [risposta]. Dovresti fornire alcune informazioni sul perché il tuo codice risolve il problema. Le risposte al solo codice non sono utili per la comunità. – JimHawkins

Problemi correlati