17

我将 tinyMCE 用于文本区域并通过 AJAX 发布表单。

但是当我试图保存 textarea 值时,它在第一次单击时采用旧值,但在第二次单击时采用更新值。

我试过使用tinyMCE.triggerSave(),但没有用。

我也试过tinyMCE.get('myid').getContent()了,仍然需要旧值。

我的代码如下。

    $(".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;
    });

请帮助,任何帮助将不胜感激

4

7 回答 7

53

您可以按如下方式配置 TinyMCE,以在通过 TinyMCE 编辑器进行更改时保持隐藏文本区域的值同步:

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

有了这个,您可以随时直接从 textarea 元素访问最新值。

这已经在 TinyMCE 4.0 上测试过了

演示运行在:http: //jsfiddle.net/9euk9/

于 2014-06-18T11:43:24.857 回答
15

用这个代替tinymce.triggerSave();

$('#' + 'your_editor_id').html( tinymce.get('your_editor_id').getContent() );
于 2013-01-18T09:51:06.343 回答
6

Dan Malcolm 为 TinyMCE 3.x 发布的替代实现如下:

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

除了在 3.x 上工作外,此版本还使用editor.save而不是tinymce.triggerSave,这意味着它只更新当前编辑器而不是页面中的所有编辑器。

于 2017-04-28T15:23:31.270 回答
2

在使用 Ajax 发布数据之前使用此脚本。这是使用前的 javascript 代码,请加载微小的 mce js 文件并使用它。

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; 
    } 
});
于 2019-02-08T11:30:03.287 回答
1

对我来说工作正常

tinymce.triggerSave();

把它放在ajax帖子之前

于 2021-02-25T01:07:38.543 回答
0

@丹马尔科姆,

我注意到,当您在其中一个框中键入内容时,然后按“显示文本值”按钮,然后如果单击“撤消”箭头,它只会保留已显示的文本,而不是由“撤消”引起的新文本”。我在尝试使用您的示例检查文本编辑器中是否包含某些内容时发现了它。

在我的示例中,如果我在其中输入内容,然后执行“撤消”,它会删除其中的文本,但表单仍会提交。

请参见此处的示例:

enter code here

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

enter code here
于 2019-02-12T22:59:22.110 回答
0

我知道时间过去了,但我今天找到了这个解决方案。

在序列化表单之前,您必须使用以下方法保存编辑器:

tinymce.activeEditor.save();
var serializedForm = f.serialize();

也许这对某些同志有帮助。

于 2021-06-22T22:01:00.413 回答