我正在尝试实现自动保存功能,该功能在页面上使用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,它可以正常工作。
答案 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()