首页 > 解决方案 > 运行 tinyMCE.triggerSave() 后如何让 TinyMCE 编辑器再次工作?

问题描述

我通过 ajax 将输入发送到我的后端服务器。部分输入来自 TinyMCE 富文本编辑器。我已经运行tinyMCE.triggerSave()它,以便我可以从初始文本区域中获取值,而不是试图找出动态创建的 tinyMCE 编辑器键。问题是当我这样做时,它会使所有 tinyMCE 富文本编辑器对编辑尝试没有响应。我无法单击文本区域。

编辑


我有一个重新初始化所有编辑器的方法。这就是答案之一。但是,这不是我发现的问题。问题似乎是当我尝试对包含编辑器的卡片进行排序时。这些卡片按其中的日期排序。这就是使编辑器无法编辑的原因。我希望我知道一种更好的方法来对它们进行分类。我是否需要“关闭”编辑器然后重新启动它们?

这是编辑器脚本

/**
 * Sort contact history cards by the date they show.
 */
const sortHistories = () => {
    $(".history-card").sort((first, second) => {
        const firstDate = Date.parse($(first).attr('data-history-date'));
        const secondDate = Date.parse($(second).attr('data-history-date'));
        return (firstDate > secondDate) ? -1 : (firstDate < secondDate) ? 1 : 0;
    }).appendTo($("#history-cards"));
};

标签: javascripttinymcetinymce-4richtext

解决方案


当您调用triggerSave()TinyMCE 所做的一切就是获取 TinyMCE 的当前内容并将其推入底层textarea.

我制作了一个 TinyMCE Fiddle 来展示这一点:

https://fiddle.tiny.cloud/F3haab/1

如果您在编辑器中编辑内容并单击第一个按钮,您将看到getContent()API 调用看到更新但底层textarea不会更新。如果您单击第二个按钮triggerSave(),则首先调用与第一个按钮相同的方法。第二个按钮的最终结果显示与编辑器triggerSave()同步。textarea

这些活动本身并没有对编辑器的功能产生任何影响。

你为什么要重新初始化编辑器?你是第remove()一个编辑吗?我认为提交内容的简单行为不会要求您必须remove()重新init()编辑,以便您未描述的页面上可能还有其他内容?


推荐阅读