wake-up-neo.com

TinyMCE-Textbereich und Post-Formular mit Ajax

Ich verwende tinyMCE für Textareas und POSTing-Form über AJAX.

Wenn ich versuche, den Textbereichswert zu speichern, werden beim ersten Klick alte Werte übernommen, beim zweiten Klick jedoch aktualisierte Werte.

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

Ich habe auch tinyMCE.get('myid').getContent() ausprobiert, es sind immer noch alte Werte.

Mein Code lautet 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 Sie, jede Hilfe wäre dankbar

13
Sanjay Panchal

Verwenden Sie dies anstelle von tinymce.triggerSave();

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

Sie können TinyMCE wie folgt konfigurieren, um die Werte der ausgeblendeten Textbereiche synchron zu halten, da Änderungen über TinyMCE-Editoren vorgenommen werden:

tinymce.init({
    selector: "textarea",
    setup: function (editor) {
        editor.on('change', function () {
            tinymce.triggerSave();
        });
    }
});

Auf diese Weise können Sie jederzeit direkt aus den Textfeldelementen auf aktuelle Werte zugreifen.

Dies wurde auf TinyMCE 4.0 getestet 

Demo läuft unter: http://jsfiddle.net/9euk9/

40
Dan Malcolm

Eine alternative Implementierung zu der von Dan Malcolm für TinyMCE 3.x veröffentlichten Version würde wie folgt aussehen:

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

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

2
HappyDog

@Dan Malcom,

Ich habe bemerkt, dass, wenn Sie etwas in eines der Felder eingeben, die Schaltfläche "Textwerte anzeigen" drücken. Wenn Sie auf den Pfeil "Rückgängig" klicken, wird der bereits angezeigte Text beibehalten, nicht der neue Text, der durch "Rückgängig" verursacht wurde ". Ich habe es entdeckt, als ich versuchte, anhand Ihres Beispiels zu prüfen, ob der Texteditor etwas enthielt.

Wenn ich in meinem Beispiel etwas eingebe, dann "Rückgängig machen", wird der Text darin entfernt, das Formular wird jedoch weiterhin gesendet.

Beispiel hier sehen: 

enter code here

https://codepen.io/speedygonzales77/pen/bzMrqB

enter code here
0

verwenden Sie dieses Skript, bevor Sie mit Ajax Daten veröffentlichen. Dies ist Javascript-Code vor der Verwendung. Bitte laden Sie die tiny mce js-Datei und verwenden Sie sie.

tinymce.triggerSave ();

$.ajax({ 
    type: 'post', 
    url: 'autoSaveReport.php', 
    data: $('form').serialize(), 
    success: function (result) { 
        var redirectURL = window.location.pathname; 
        var redirectURL1 = redirectURL+"?incid="+result; 
        window.location = window.location+"?incid="+result; 
    } 
});
0
user2828818