Dieser Artikel analysiert die Lösung für das Problem, dass Tinymce bei der Übermittlung von Ajaxform keine Daten erhalten kann. Teilen Sie es für Ihre Referenz. Die spezifische Analyse ist wie folgt:
Bevor ich AjaxForm verwendete, habe ich ein Webformular für die Einreichung von Kommentaren erstellt, und der Kommentarinhalt wurde für die Textbearbeitung verwendet. Um die Benutzererfahrung ein wenig zu erhöhen, werde ich AjaxForm verwenden, um die AJAX -Einreichung zu implementieren. Aber ich fand, dass etwas Unerwartetes passiert ist. Jedes Mal, wenn Sie einreichen, kann AjaxForm nicht in der Lage sein, den aktuell bearbeiteten Kommentarinhalt zu erhalten, dh den Inhalt in TextArea. Sie müssen erneut auf Senden klicken, um den Inhalt des Textbereichs einzureichen.
Der Punkt ist, dass der Inhalt von Tinymce vor der Einreichung nicht in textarea aktualisiert wird. Ich wollte also sehen, ob AjaxForm vor der Einreichung eine Ereignisbindung hat. Ich stellte fest, dass im Befreit des Events der Inhalt von FormData gefüllt wurde. Obwohl ich hier den aktuellen Tinymce -Inhalt füllen kann, habe ich immer das Gefühl, dass er nicht sehr schön ist.
Um herauszufinden, ob es andere Möglichkeiten gibt, dieses Problem zu lösen, habe ich den Quellcode von AjaxForm überprüft und festgestellt, dass der Autor von AjaxForm eine einheitliche Lösung für dieses Problem vorgeschlagen hat. Der spezifische Quellcode lautet wie folgt:
1. Der JS -Code lautet wie folgt:
Die Codekopie lautet wie folgt: // Haken zum Manipulieren der Formdaten, bevor sie extrahiert werden;
// bequem für die Verwendung mit reichen Redaktoren wie Tinymce oder Fckeditor
var veto = {};
this.trigger ('form-pre-serialize', [this, options, veto]);
if (veto.veto) {
log ('ajaxSubmit: über ein Veto über ein Formular-Pre-Serialize-Trigger eingereichte');
gib dies zurück;
}
2. entsprechend dem Fckeditor ist ähnlich:
Kopieren Sie den Code wie folgt: // Binden Sie das Formular mit 'AjaxForm'
$ ('#commentform'). AjaxForm (Optionen);
// Binden Sie das Ereignis von Form-Pre-serializen und speichern Sie die Tinymce-Daten in die TextArea, bevor Sie das formserilisierende Ereignis auslösen.
$ ('#commentform'). Bind ('Form-Pre-Serialize', Funktion (Ereignis, Form, Optionen, Veto) {
Tinymce.Thergersave ();
});
Ich hoffe, dieser Artikel wird für JavaScript -Programme aller hilfreich sein.