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);
        });
});

}

問題は、ページに2つのフォームがある場合、$('textarea [name = "answer"]'、this).val()がその値を変更しないことです。明確にするために、2つのフォームがある場合、テキストエリアに加えた変更を反映して、一方の更新された値を返し、もう一方のフォームの元の値を返します(つまり、テキストエリアの1つに変更を加えてから、 val()はこれらの変更を更新しません)。

これはTinyMCEの問題ですか?それとも、これを別の方法で行う必要がありますか?

ありがとう。

更新:TinyMCEがテキストエリアで使用されていない場合は正常に機能します。

4

2 に答える 2

1

同じ名前の 2 つのフォームを持つことは、おそらく良い考えではありません。各フォームに一意の識別子を追加します。

<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 に答える