0

我在我的网站中使用 TinyMCE 来编辑文本区域并将内容发布到数据库。但是,我遇到的问题是,当我按下表单的提交按钮并将内容(通过 ajax - jQuery)发布到 PHP 文件时,在许多情况下发布的文本等于 null(即 TinyMCE 文本区域中的更改未检测到)。

这是我的表单代码,其中 TinyMCE 与“richArea”类相关联

<form id="uploadMixedBoxForm" method="post" action="'.$websiteURL.'/resources/changeText.php">
<p><strong>'._("Text:").'</strong></p>
<textarea name="mixTextAdd" class="richArea"></textarea>
<input type="submit" class="nicerButton" value="'._("Submit").'" />
</form>

这是接收数据的 PHP 文件

<?php

if (!isset($_POST[mixTextAdd]) or $_POST[mixTextAdd] == "") { 
echo '<div class="error"><i class="icon-thumbs-down icon-2x"></i> '._("No text content.").'</div>';
exit;
}

addToDatabase(mixTextAdd);

?>

从表单接收数据的 PHP 文件有一个简单的控件,如果 textarea 的内容为空,则输出错误。行为是,当我在 tinymce 区域中键入文本并按提交时,我总是收到错误消息,提示文本丢失,但是,如果我再次按提交,则检测到文本,因此不会出现错误。这总是系统地发生。如果我通过 jQuery 禁用帖子并在不使用 ajax 的情况下简单地发布到第二页,一切正常

我读到TinyMCE没有检测到文本更改的事实可能是由于与控制撤消功能相关的性能问题,但是在我输入文本时,撤消级别被激活(即撤消按钮变为活动状态,因此 TinyMCE 检测到文本的变化)。

4

2 回答 2

1

要在 JavaScript 中访问 tinyMCE 编辑器的内容,您需要使用

tinyMCE.get('mixTextAdd').getContent();

而不是直接访问文本区域(通过,比如说,$('#mixTextAdd'))。这可能是问题吗?(显然我在这里猜测,因为您没有发布用于进行 AJAX 调用的代码 - 如果您已经了解了这一点,我们深表歉意!)

于 2013-10-24T09:29:30.880 回答
0

似乎TinyMCE 编辑器实例不直接编辑 textareas,或者至少这是通过 ajax 提交 TinyMCE 内容时的行为。因此,我通过将tinyMCE.triggerSave()直接添加到表单的 onclick 事件来解决。

<form id="uploadMixedBoxForm" method="post" action="'.$websiteURL.'/resources/changeText.php">
<p><strong>'._("Text:").'</strong></p>
<textarea name="mixTextAdd" class="richArea"></textarea>
<input type="submit" class="nicerButton" onclick="tinyMCE.triggerSave()" value="'._("Submit").'" />
</form>
于 2013-10-25T08:43:24.083 回答