2017-07-08 95 views
0

你能告诉我怎么才能得到表单上的所见即所得的内容提交给相应的textareas?TinyMCE onsubmit不会填充textareas。

我有窗体提交javascript验证,但当验证码触发编辑器textareas是空的。所以我仍然收到错误“Field is required ...”。我不明白TinyMCE如何处理这个问题,但这没有意义。我的js验证的事件监听器位于scritps的尽头,但textareas仍然是空的。

是否有一些触发器强制TinyMCE用内容onsubmit填充textareas?

回答

-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>同步,可能会影响浏览器的性能。

哪个更好?

如果您不需要的内容的实时验证...只是打电话triggerSave()在AJAX提交过程开始时可能更容易(绑在需要的情况下不会TinyMCE的配置代码),并产生更少浏览器的开销。

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

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

我只想说这种行为是唯一的 - 它绝对是用户(编码器)不友好的界面。我试图使用“提交”事件而不是“更改”,但它会造成同样的问题。我的问题是:为什么TinyMCE不支持CONVENTION OVER CONFIGURATION原则,对于不需要验证内容的用户(是谁?)或者发出ajax请求,可能会有一些回调触发triggerSave()。像客户端验证这样重要的事情应该有提交的原生支持。当然,这是文件的明确部分(不是)。 –

+0

@Čamo你可以创建一个演示你如何尝试使用提交事件?我使用标准表单提交事件来触发与TinyMCE的交互,而没有问题。 TinyMCE中没有“提交”事件,因此您不能使用'editor.on()'API调用提交事件(不存在此类事件)。至于配置公约,我们只是这么做的 - 你不得不采取任何措施让TinyMCE模仿标准Web表单中的标准'