TinyMCE onsubmit没有填写textareas。

时间:2017-07-08 15:25:18

标签: javascript forms tinymce tinymce-4 onsubmit

您能否告诉我如何才能将表格上的WYSIWYG内容提交给相应的textareas?

我在表单提交上有javascript验证,但是当验证代码被触发时,编辑器textareas是空的。所以我仍然收到错误“字段是必需的......”。我不明白TinyMCE如何处理这个问题,但这没有任何意义。我对js验证的事件监听器是在scritps的最后但是textareas仍然是空的。

是否有一些触发器迫使TinyMCE用提交内容填充textareas?

1 个答案:

答案 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();
      });
  }
});