您能否告诉我如何才能将表格上的WYSIWYG内容提交给相应的textareas?
我在表单提交上有javascript验证,但是当验证代码被触发时,编辑器textareas是空的。所以我仍然收到错误“字段是必需的......”。我不明白TinyMCE如何处理这个问题,但这没有任何意义。我对js验证的事件监听器是在scritps的最后但是textareas仍然是空的。
是否有一些触发器迫使TinyMCE用提交内容填充textareas?
答案 0 :(得分:2)
默认情况下,TinyMCE会在通过标准HTML表单提交提交表单时自动更新基础<textarea>
。这是TinyMCE中的内置行为,因为大多数应用程序不需要保持<textarea>
始终同步的开销。
如果您不依赖于标准HTML表单提交事件,那么您有几个选项......
当您启动AJAX表单提交过程时:
TinyMCE有triggerSave()
方法强制编辑器立即与<textarea>
同步。
https://www.tinymce.com/docs/api/tinymce/root_tinymce/#triggersave
当您的用户想要提交表单然后执行验证时,您可以先调用triggerSave()
。
TinyMCE活动:
由于您对自己问题的回复显示,您当然可以依靠各种编辑器事件通过<textarea>
方法将编辑器同步到triggerSave()
。这没有任何技术问题,只要知道如果你依赖像变更事件这样的事情,你可能会触发大量的这些事件。如果您在一个页面上有大型/复杂的HTML内容或许多编辑器,则不断与基础<textarea>
同步可能会影响浏览器的性能。
哪个更好?
如果您不需要对内容进行实时验证...... 在AJAX提交过程开始时调用triggerSave()
可能更容易(没有TinyMCE配置代码绑定到需要的事件)并为浏览器创建更少的开销。
如果您需要实时验证内容...... 使用像更改事件这样的事件来同步<textarea>
是更好的解决方案。它可能看起来像这样:
tinymce.init({
selector: "#myTextarea",
...
setup: function (editor) {
editor.on('change', function () {
tinymce.triggerSave();
});
}
});