当内容通过jQuery发布时,为什么TinyMCE没有检测到文本的变化?

时间:2013-10-24 09:15:12

标签: php jquery ajax tinymce

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

这是我的表格代码,其中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的内容为null,则输出错误。 行为是当我在tinymce区域输入文本并按提交时,我总是收到错误,告诉文本丢失,但是,如果我再次按提交,则检测到文本,因此没有错误出现即可。这总是发生在sistematically。 如果我通过jQuery禁用帖子,只是在不使用ajax的情况下发布到第二页,一切正常

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

2 个答案:

答案 0 :(得分:1)

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

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

而不是直接访问textarea(例如,通过$('#mixTextAdd'))。这可能是问题吗? (显然我在这里猜测,因为你没有发布你用来进行AJAX调用的代码 - 如果你已经覆盖了这个代码,那么道歉!)

答案 1 :(得分:0)

似乎是TinyMCE editor instances do not directly edit 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>