【问题标题】:TinyMCE onsubmit does not fill the textareas.TinyMCE onsubmit 不会填充文本区域。
【发布时间】:2017-07-08 15:25:18
【问题描述】:

您能告诉我如何将表单上的所见即所得内容提交到相应的文本区域吗?

我对表单提交进行了 javascript 验证,但是当验证代码被触发时,编辑器的文本区域为空。所以我仍然得到一个错误“字段是必需的......”。我不明白 TinyMCE 是如何处理这个问题的,但这没有任何意义。我的 js 验证事件侦听器位于脚本的最后,但 textareas 仍然为空。

是否有一些触发器可以强制 TinyMCE 在提交时用内容填充文本区域?

【问题讨论】:

    标签: javascript forms tinymce tinymce-4 onsubmit


    【解决方案1】:

    默认情况下,当通过标准 HTML 表单提交提交表单时,TinyMCE 会自动更新底层的<textarea>。这是 TinyMCE 中的内置行为,因为大多数应用程序不需要保持<textarea> 持续同步的开销。

    如果您不依赖于标准的 HTML 表单提交事件,您有几个选择...

    当您启动 AJAX 表单提交过程时:

    TinyMCE 有一个triggerSave() 方法,可以强制编辑器立即与<textarea> 同步。

    https://www.tinymce.com/docs/api/tinymce/root_tinymce/#triggersave

    当您的用户想要提交表单然后执行验证时,您可以首先调用triggerSave()

    TinyMCE 事件:

    正如您对自己问题的回答表明,您当然可以依靠各种编辑器事件通过triggerSave() 方法将编辑器同步到<textarea>。这没有技术问题,只要知道如果您依赖于 change 事件之类的东西,您可能会触发大量此类事件。如果您在一个页面上有大量/复杂的 HTML 内容或多个编辑器不断与底层 <textarea> 同步,则可能会影响浏览器的性能。

    哪个更好?

    如果您不需要实时验证内容... 在 AJAX 提交过程开始时调用 triggerSave() 可能更容易(没有与事件相关联的 TinyMCE 配置代码需要)并为浏览器创建更少的开销。

    如果您确实需要对内容进行实时验证...使用类似 change 事件的事件来同步 <textarea> 是更好的解决方案。它可能看起来像这样:

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

    【讨论】:

    • 对于这种行为,我唯一想说的是 - 这绝对是用户(编码器)不友好的界面。我尝试使用“提交”事件而不是“更改”,但它产生了同样的问题。我的问题是:为什么 TinyMCE 不支持 CONVENTION OVER CONFIGURATION 原则,对于不需要验证内容(是谁?)或发出 ajax 请求的用户,可能会有一些回调来触发 triggerSave()。像客户端验证这样重要的事情应该有对提交的原生支持。当然,这必须是文档的明确部分(不是)。
    • @Čamo 你能创建一个演示,说明你是如何尝试使用提交事件的吗?我使用标准表单提交事件来触发与 TinyMCE 的交互而不会出现问题。 TinyMCE 中没有“提交”事件,因此您不能使用editor.on() API 调用提交事件(不存在此类事件)。至于约定优于配置,我们就是这样做的——你不必做任何事情来让 TinyMCE 模仿标准 Web 表单中的标准 <textarea>。如果你想做一些非标准的事情,比如使用 AJAX 来获取表单数据并将其提交到普通/标准的 Web 表单 UI 之外,你只需要编写代码。
    • @Čamo 也很好奇你为什么不赞成这个答案。根据 SO 指导方针......“每当您遇到极其草率、不费吹灰之力的帖子或明显不正确且可能危险地不正确的答案时,请使用您的反对票。”虽然我知道您希望编辑器的行为有所不同,但我的回答是草率、不正确还是不费吹灰之力?
    • 所以我很抱歉。我用纯 HTML 和 TinyMCE 做了一个测试,它工作正常。问题出在我用来处理 js 验证的框架中。解决方案是针对此固件中的 TinyMCE 的。再说一遍 - 对不起。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多