具有相同名称的不同形式的多个TinyMCE实例(jQuery)

时间:2009-07-27 06:09:15

标签: php javascript jquery html tinymce

我正在尝试实现自动保存功能,该功能在页面上使用TinyMCE'd 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所做的任何更改,并返回另一个表的原始值(即如果我对其中一个textareas进行任何更改调用val()不会更新这些更改。)

这是一个TinyMCE问题吗?或者是否有必要以另一种方式做到这一点?

感谢。

更新:如果未在textareas中使用TinyMCE,它可以正常工作。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

function autoSaveEditForms($formid)

答案 1 :(得分: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()