javascript - 运行 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"));
};
解决方案
当您调用triggerSave()
TinyMCE 所做的一切就是获取 TinyMCE 的当前内容并将其推入底层textarea
.
我制作了一个 TinyMCE Fiddle 来展示这一点:
https://fiddle.tiny.cloud/F3haab/1
如果您在编辑器中编辑内容并单击第一个按钮,您将看到getContent()
API 调用看到更新但底层textarea
不会更新。如果您单击第二个按钮triggerSave()
,则首先调用与第一个按钮相同的方法。第二个按钮的最终结果显示与编辑器triggerSave()
同步。textarea
这些活动本身并没有对编辑器的功能产生任何影响。
你为什么要重新初始化编辑器?你是第remove()
一个编辑吗?我认为提交内容的简单行为不会要求您必须remove()
重新init()
编辑,以便您未描述的页面上可能还有其他内容?
推荐阅读
- c++ - 在路径前添加“-I”和“-L”是什么意思?
- java - java - 如何从java中的executeUpdate OR update中获取值?
- amazon-web-services - 如何在 Cloudformation 模板中引用 Fn::Transform
- reactjs - 如何为动态创建的功能组件添加 ref?
- html - 如何从按钮上的链接中删除下划线?
- c++ - 为什么 pthread_rwlock 可以递归获取写锁?
- javascript - Vue计算属性改变数据对象
- bash - 在 Ubuntu/Bash 和 Windows/Powershell 之间生成具有不同结果的 SHA1 签名
- python - Python有没有办法从二进制文件中读取__float128?
- wpf - 如何使滚动条在 WPF 中的画布周围可见