0

フォームに jquery jhtml WYSIWYG エディターがあり、その出力を手動でテキストエリアに追加する必要があります。フォームは ajax 経由で送信されています。updateText 関数が呼び出され、wysiwyg div 内の内容を取得し、それをテキストエリアに配置して、ajax が送信できるようにします。この関数を起動するために ajaxForm の「beforeSubmit」コールバックを使用しています。

//For Ajax Form
$('#addFaci').ajaxForm({
        beforeSubmit: updateText,
        success: function(response) {
            eval(response);
        }
});

function updateText(formData, jqForm, options){
    var save = '#detail';
    $(save).val($(save).htmlarea("toHtmlString"));
    return true;
}; 

これは最初の送信では機能しません... updateText が実際に起動する前に、送信を 2 回クリックする必要があります。誰にもアイデアはありますか?

ありがとう、

4

1 に答える 1

2

送信を押すと、次のようになります。

  1. フォームデータが収集されています
  2. beforeSubmitが起動し、収集されたフォームデータが最初のパラメーターとして渡されます
  3. textareaの値を変更していますが、データがすでに収集されているため、手遅れです

textareaの値を変更する代わりに、formDataオブジェクトを変更する必要があります。

UPD。これを試して:

for (var i in formData) {
  if (formData[i].name == '...name of your textarea here...') {
    formData[i].value = ...wysiwyg's html...
  }    
}

さらに簡単に、非表示のテキストエリアを削除して、これを使用します。

function updateText(formData, jqForm, options) {
    formData.push({name: 'textarea_name', value: .... })
    return true;
}; 
于 2011-02-21T06:48:52.037 に答える