1

我正在尝试实现一个自动保存功能,该功能使用 TinyMCE 的 textareas 在同名的页面上提交几个不同的表单。

我的代码:

function autoSaveEditForms() {
    $("#auto_save_notify").html("Saving...");
    $("#auto_save_notify").show();
$("form[name=editForm]").each(function() {

    if($('input[name="question"]', this).val() == "" || $('textarea[name="answer"]', this).val() == "")
        return;

    $.post("<?php echo $CONFIG->wwwroot; ?>action/faq/edit?autosave=true", $(this).serialize(), function(data) { 

            $("#auto_save_notify").fadeOut(5000);
        });
});

}

问题是如果页面上有两个表单, $('textarea[name="answer"]', this).val() 不会改变它的值。澄清一下,如果我有两种形式,它会返回其中一种的更新值,反映我对 textarea 所做的任何更改,并返回另一种的原始值(即,如果我对其中一个 textarea 进行任何更改,然后调用val() 不会更新这些更改)。

这是 TinyMCE 问题吗?还是有必要以另一种方式做到这一点?

谢谢。

更新:如果在文本区域中不使用 TinyMCE,它可以正常工作。

4

2 回答 2

1

拥有两个具有相同名称的表单可能不是一个好主意。为每个表单添加一个唯一标识符:

<form name="myform1">
</form>

<form name="myform2">
</form>

对触发此事件的事件进行编码以传递它所在的形式:

function autoSaveEditForms($formid)
于 2009-07-27T06:16:34.247 回答
0

好的,我知道了。事实证明,您无法以通常的 jquery 方式访问数据。以这种方式初始化 TinyMCE:

tinyMCE.init({
  mode : "none",
  theme : "advanced"
});

/* call this function in ajax return text */
function makeTinyMCE(faqid) {
    tinyMCE.execCommand('mceAddControl', false, 'answer'+faqid);

}

然后这样抓取文字:

tinyMCE.editors['answer'+faqid].getContent()
于 2009-07-28T04:37:24.427 回答