Heim >Web-Frontend >js-Tutorial >TinyMCE sendet AjaxForm und erhält keine Datenlösungs-Javascript-Kenntnisse

TinyMCE sendet AjaxForm und erhält keine Datenlösungs-Javascript-Kenntnisse

WBOY
WBOYOriginal
2016-05-16 16:10:591075Durchsuche

In diesem Artikel wird die Lösung des Problems analysiert, dass TinyMCE bei der Übermittlung von AjaxForm keine Daten abrufen kann. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:

Bevor ich AjaxForm verwendete, habe ich ein kleines Webformular zur Kommentarübermittlung erstellt. Der Kommentarinhalt wurde mit TinyMCE bearbeitet. Um das Benutzererlebnis ein wenig zu verbessern, verwenden Sie einfach AjaxForm, um die Ajax-Übermittlung zu implementieren. Doch etwas Unerwartetes geschah. Das heißt, dass AjaxForm beim ersten Senden nicht den aktuell bearbeiteten Kommentarinhalt abrufen kann, d. h. den Inhalt in TextArea. Sie müssen erneut auf „Senden“ klicken, um den Inhalt von TextArea zu senden.

Der Schlüssel liegt darin, dass der Inhalt auf TinyMCE vor der Übermittlung nicht in der TextArea aktualisiert wird. Deshalb wollte ich vor der Übermittlung prüfen, ob AjaxForm über eine Ereignisbindung verfügt. Ich habe festgestellt, dass im Ereignis beforeSubmit der Inhalt von formData ausgefüllt wurde. Obwohl ich hier den Inhalt des aktuellen TinyMCE ausfüllen kann, habe ich immer das Gefühl, dass dies nicht der Fall ist sehr hübsche Lösung.

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:

Code kopieren Der Code lautet wie folgt:
// Hook zum Bearbeiten der Formulardaten vor dem Extrahieren;
// praktisch für die Verwendung mit umfangreichen Editoren wie tinyMCE oder FCKEditor
varveto = {};
this.trigger('form-pre-serialize', [this, options, veto]);
if (veto.veto) {
log('ajaxSubmit: Übermittlung per Form-Pre-Serialize-Trigger überprüft');
gib dies zurück;
}

2. Ähnlich wie FCKEditor:
Code kopieren Der Code lautet wie folgt:
// Formular mit 'ajaxForm' binden
$('#commentForm').ajaxForm(options);
// Binden Sie das form-pre-serialize-Ereignis und speichern Sie die tinyMCE-Daten im Textbereich, bevor Sie das form-serilaize-Ereignis
auslösen $('#commentForm').bind('form-pre-serialize', function(event, form, options, veto) {
tinyMCE.triggerSave();
});

Ich hoffe, dass dieser Artikel für das JavaScript-Programmierdesign aller hilfreich sein wird.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn