Maison >interface Web >js tutoriel >TinyMCE soumet AjaxForm et ne parvient pas à obtenir les compétences solution_javascript de données

TinyMCE soumet AjaxForm et ne parvient pas à obtenir les compétences solution_javascript de données

WBOY
WBOYoriginal
2016-05-16 16:10:591075parcourir

Cet article analyse la solution au problème selon lequel TinyMCE ne peut pas obtenir de données lors de la soumission d'AjaxForm. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :

Avant d'utiliser AjaxForm, j'ai créé un petit formulaire Web pour la soumission de commentaires. Le contenu des commentaires a été modifié à l'aide de TinyMCE. Afin d'améliorer un peu l'expérience utilisateur, utilisez simplement AjaxForm pour implémenter la soumission Ajax. Mais quelque chose d’inattendu s’est produit. Autrement dit, chaque fois que vous soumettez, la première fois que vous soumettez, AjaxForm ne pourra pas obtenir le contenu du commentaire actuellement modifié, c'est-à-dire le contenu de TextArea. Vous devez cliquer à nouveau sur Soumettre pour soumettre le contenu de TextArea.

La clé est que le contenu sur TinyMCE n'est pas mis à jour vers TextArea avant la soumission. Je voulais donc voir si AjaxForm avait une liaison d'événement avant la soumission. J'ai trouvé que dans l'événement beforeSubmit, le contenu de formData avait été rempli. Bien que je puisse remplir le contenu du TinyMCE actuel ici, j'ai toujours l'impression que ce n'est pas le cas. très jolie solution.

Afin de savoir s'il existe d'autres moyens de résoudre ce problème, j'ai vérifié le code source d'AjaxForm et j'ai découvert que l'auteur d'AjaxForm avait proposé une solution unifiée à ce problème. Le code source spécifique est le suivant :

1. Le code js est le suivant :

Copier le code Le code est le suivant :
// hook pour manipuler les données du formulaire avant leur extraction ;
// pratique à utiliser avec des éditeurs riches comme tinyMCE ou FCKEditor
varveto = {};
this.trigger('form-pre-serialize', [this, options, veto]);
si (veto.veto) {
log('ajaxSubmit : soumission vérifiée via le déclencheur de pré-sérialisation du formulaire');
rends ceci ;
>

2. Semblable à FCKEditor :
Copier le code Le code est le suivant :
// lier le formulaire à l'aide de 'ajaxForm'
$('#commentForm').ajaxForm(options);
// Lier l'événement form-pre-serialize et enregistrer les données tinyMCE dans la zone de texte avant de déclencher l'événement form-serilaize
$('#commentForm').bind('form-pre-serialize', function(event, form, options, veto) {
tinyMCE.triggerSave();
});

J'espère que cet article sera utile à la conception de la programmation JavaScript de chacun.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn