この記事では、Ajaxformを送信する際にTinymceがデータを取得できない問題の解決策を分析します。参照のためにそれを共有してください。特定の分析は次のとおりです。
Ajaxformを使用する前に、小さなコメントの提出Webフォームを作成しました。コメントコンテンツはテキスト編集に使用されました。ユーザーエクスペリエンスを少し増やすために、AjaxFormを使用してAJAXの提出を実装します。しかし、私は予想外のことが起こったことがわかりました。提出するたびに、Ajaxformは現在編集されているコメントコンテンツ、つまりTextareaのコンテンツを取得できません。 Textareaのコンテンツを送信するには、もう一度[送信]をクリックする必要があります。
ポイントは、Tinymceのコンテンツが提出前にTextareaに更新されないことです。だから、ajaxformが提出前にイベントバインディングを持っているかどうかを確認したかった。 beforesubmitイベントでは、formdataの内容が満たされていることがわかりました。ここで現在のTinymceコンテンツを埋めることはできますが、それはそれほど美しくないといつも感じています。
この問題を解決する他の方法があるかどうかを調べるために、Ajaxformのソースコードを確認し、Ajaxformの著者がこの問題に対する統一されたソリューションを提案していることを発見しました。特定のソースコードは次のとおりです。
1. JSコードは次のとおりです。
コードコピーは次のとおりです。//抽出される前にフォームデータを操作するためのフック。
// TinymceやFckeditorなどの豊富な編集者で使用するのに便利です
var veto = {};
this.trigger( 'form-pre-serialize'、[this、options、veto]);
if(veto.veto){
log( 'ajaxSubmit:フォーム-PRE-SERIALIZE TRIGGER'を介して拒否された提出 ');
これを返します。
}
2。FCKEDITORに対応するのは似ています。
次のようにコードをコピーします://「ajaxform」を使用してフォームをバインドします
$( '#commentform')。ajaxform(options);
// form-pre-serializeイベントにバインドし、form-serilizeイベントをトリガーする前に、TinymceデータをTextareaに保存します。
$( '#commentform')。bind( 'form-pre-serialize'、function(event、form、options、veto){
tinymce.triggersave();
});
この記事がみんなのJavaScriptプログラミングに役立つことを願っています。