私はフォームを持っています。 TinyMCEエディタが接続されたフォームフィールドが1つあります。Django、TinyMCEフィールドのシリアル化の矛盾
フォームが変更されているかどうかを確認したい場合は、ポップアップモーダルが表示されます。 私はすべてのページのロード上で実行されます。このコードによってこれを実現:
$($('my-form').each(function() {
$(this).data('init') = $(this).serialize();
})
$(window).bind('beforeunload', custom_validator);
);
そしてもちろんcustom_validator機能は、同じファイル内にある:ページが読み込まれると、データが(「initの」
function custom_validator() {
$('my-form').each(function() {
if ($(this).data('init') != $(this).serialize()) {
return "Form has unsaved changes.";
}
})
}
)は、TinyMCEフィールドでもシリアル化されています。 TinyMCEフィールドに複数の行が含まれている場合、serialize()はそれらを '%0D%0A'で表します。どちらが良いですか。 フォームを変更した後にページから移動したい場合や、フォームを変更した後にリロードする場合は、beforeunloadイベントによってcustom_validator関数がトリガされ、それが正常に実行されなくなります。
問題は、ページを読み込んだときにフォームに何も変更せずにページから移動したい場合に発生します。ポップアップウィンドウが表示され、フォームにも変更があります何も変わらなかった。
TinyMCEフィールドに複数の行があると、ページが読み込まれるときにdata( 'init')に '%0D%0A'文字が含まれていますが、 'custom_validator'関数でフォームのシリアル化を行うとそれらの文字は含まれません。 フォームの提出も問題なく動作します。
2つのシリアライザが異なるシリアル化文字列を返す理由は何ですか?フォームに触れていない場合は同じにする必要があります。