2013-01-18 16 views
10

Ich benutze tinyMCE für Textareas und POSTing Form durch AJAX.TinyMCE Textarea und Post Form mit Ajax

Wenn ich jedoch versuche, den Textarea-Wert zu speichern, werden beim ersten Klick alte Werte übernommen, aber beim zweiten Klick werden die Werte aktualisiert.

Ich habe versucht mit tinyMCE.triggerSave(), aber es hat nicht funktioniert.

Ich habe auch versucht tinyMCE.get ('myid'). GetContent(), noch dauert es alte Werte.

Mein Code ist wie folgt.

$(".submit").live("click", function() { 
      tinyMCE.triggerSave(); 
      var f = $(this).parents("form"); 
      var action = f.attr("action"); 
      var serializedForm = f.serialize(); 
      //tinyMCE.triggerSave(); also tried putting here 
      $.ajax({ 
       type: 'POST', 
       url: action, 
       data: serializedForm, 
       async: false, 
       success: function (data, textStatus, request) { 
        $(".divform").html(data); 
       }, 
       error: function (req, status, error) { 
        alert&("Error occurred!"); 
       } 
      }); 
    return false; 
    }); 

Bitte helfen, jede mögliche Hilfe würde

Antwort

9

verwenden statt tinymce.triggerSave();

$('#' + 'your_editor_id').html(tinymce.get('your_editor_id').getContent()); 
+2

Danke, aber ich habe tinyMCE.activeEditor.getContent() verwendet und es hat funktioniert. Danke für Ihre Antwort. –

+0

natürlich tut es: tinyMCE.activeEditor ist die gleiche Editor-Instanz, die Sie mit tinymce.activeEditor erhalten. Aber beachte, dass tinymce.activeEditor nur dann gesetzt wird, wenn der Benutzer in den Editor klickt, sonst ist es undefiniert, während tinymce.get ('your_editor_id') immer eine Editor-Instanz liefert. – Thariama

+0

ok danke für den Vorschlag. –

33

erkannt werden, können Sie TinyMCE konfigurieren, wie die Werte von versteckten Textbereiche synchron zu halten folgt wie Änderungen vorgenommen werden über TinyMCE-Editoren:

Mit diesem an Ort und Stelle, Sie c ein Zugriff auf aktuelle Werte direkt aus den Textarea-Elementen zu jeder Zeit.

Dies wurde auf TinyMCE 4.0

Demo am Laufen getestet: http://jsfiddle.net/9euk9/

+0

Leider funktioniert es nicht für mich auf TinyMCE 3.x – Pere

+0

@Pere - Ich habe eine alternative Antwort geschrieben, die auf TinyMCE 3.x – HappyDog

+0

Beachten Sie, dass das Hinzufügen der 'editor.triggerSave() 'on' init' kann auch für Inline-Editoren nützlich sein, da die entsprechenden versteckten Felder keinen Wert beim Laden haben – Zach

0

Eine alternative Implementierung auf die von Dan Malcolm, 3.x für TinyMCE gepostet ein, wäre wie folgt:

tinymce.init({ 
    selector: "textarea", 
    setup: function (editor) { 
     editor.onChange.add(function() { 
      editor.save(); 
     }); 
    } 
}); 

Neben Version 3.x verwendet diese Version editor.save anstelle von tinymce.triggerSave, was bedeutet, dass nur der aktuelle Editor und nicht alle Editoren auf der Seite aktualisiert werden.