将 tinyMCE 内容添加到序列化数组 (WordPress)

Adding tinyMCE content to serialized array (WordPress)

我的 (WordPress) 网站前端有一个 HTML 表单,它可以显示 TinyMCE 字段。

表单本身可由 WP 管理员完全自定义,因此 tinyMCE 字段的 ID/name 可以是任何内容。

提交表单后,我运行一些jQuery验证字段(即任何配置为必需的必须有内容)。如果验证失败,将显示警告,否则将提交表单。

但是,当使用 tinyMCE 字段时,我无法使用它,因为我需要在我的 JS 文件中获取该字段的内容,然后在我的 PHP 验证函数中对其进行验证。

对于表单本身,我只是简单地序列化数据。我现在需要做的是将 tinyMCE 字段的输入 ID 及其内容添加到该数组。

var $form      = $("#myform");
var formData   = $("#myform").serialize();

var mceContent;

var tinymceActive = (typeof tinyMCE != 'undefined') && tinyMCE.activeEditor && ! tinyMCE.activeEditor.isHidden();

if (tinymceActive) {
    mceContent = tinyMCE.activeEditor.getContent();
}

所以我有 formData 作为我的序列化数组,mceContent 包含编辑器内容,但是如何将编辑器字段名称及其内容放入 formData?我知道我可以使用 tinymce.editors[0].id 检索编辑器名称,但我终生无法将 {tinymce.editors[0].id : mceContent} 添加到 formData 数组中。

jQuery 序列化函数适用于您表单中的表单字段...当涉及到 TinyMCE 时,编辑器 "hides" 底层 <textarea> 以及当您调用 serialize() 并通过 JavaScript 提交表格 <textarea> 为空。

在 serializing/submitting 表单之前,调用类似 tinyMCE.activeEditor.triggerSave()tinyMCE.get('yourEditorId').triggerSave() - 这将强制 TinyMCE 更新基础 <textarea> 的值,以便 jQuery 的序列化函数将正确地将 <textarea> 的值序列化为表单的自然部分。