تحلل هذه المقالة الحل للمشكلة التي لا يمكن لـ Tinymce الحصول عليها عند إرسال Ajaxform. شاركه للرجوع إليه. التحليل المحدد هو كما يلي:
قبل استخدام Ajaxform ، قمت بعمل نموذج ويب صغير لتقديم التعليق ، وتم استخدام محتوى التعليق لتحرير النص. من أجل زيادة تجربة المستخدم قليلاً ، سأستخدم Ajaxform لتنفيذ تقديم Ajax. لكنني وجدت شيئًا غير متوقع حدث. إنه في كل مرة تقوم فيها بإرسالها ، لن تتمكن Ajaxform من الحصول على محتوى التعليق الذي تم تحريره حاليًا ، أي المحتوى في Textarea. يجب عليك النقر فوق إرسال مرة أخرى لإرسال محتوى TextArea.
النقطة المهمة هي أن المحتوى الموجود على tinymce لم يتم تحديثه إلى Textarea قبل التقديم. لذلك أردت أن أرى ما إذا كان Ajaxform لديه حدث ملزمة قبل التقديم. لقد وجدت أنه في حدث Beoresubmit ، تم ملء محتوى FormData. على الرغم من أنني أستطيع ملء محتوى Tinymce الحالي هنا ، إلا أنني أشعر دائمًا أنه ليس جميلًا جدًا.
من أجل معرفة ما إذا كانت هناك طرق أخرى لحل هذه المشكلة ، قمت بفحص الكود المصدري لـ Ajaxform ووجدت أن مؤلف Ajaxform قد اقترح حلًا موحدًا لهذه المشكلة. رمز المصدر المحدد هو كما يلي:
1. رمز JS كما يلي:
نسخة الكود كما يلي: // Hook لمعالجة بيانات النموذج قبل استخلاصها ؛
// مريحة للاستخدام مع المحررين الأثرياء مثل Tinymce أو FcKeditor
var Veto = {} ؛
this.trigger ('form-pre-serialize' ، [هذا ، الخيارات ، Veto]) ؛
if (Veto.veto) {
log ('ajaxsubmit: تم تقديمه النقض عن طريق الزناد النماذج النموذجية ") ؛
إرجاع هذا ؛
}
2. المقابل لـ Fckeditor متشابه:
انسخ النموذج على النحو التالي: // BIND باستخدام "ajaxform"
$ ('#commentForm'). ajaxform (Options) ؛
// ربط الحدث النموذجية المتخصصة وحفظ بيانات tinymce في textarea قبل أن يؤدي إلى حدوث حدث تخصيص النماذج.
$ ('#commentform'). bind ('form-pre-serialize' ، وظيفة (الحدث ، النموذج ، الخيارات ، Veto) {
tinymce.triggersave () ؛
}) ؛
آمل أن تكون هذه المقالة مفيدة لبرمجة JavaScript للجميع.