Cet article analyse la solution au problème que TinyMCE ne peut pas obtenir de données lors de la soumission d'Ajaxform. Partagez-le pour votre référence. L'analyse spécifique est la suivante:
Avant d'utiliser Ajaxform, j'ai fait un petit formulaire Web de soumission de commentaires et le contenu de commentaire a été utilisé pour l'édition de texte. Afin d'augmenter un peu l'expérience utilisateur, j'utiliserai Ajaxform pour implémenter la soumission AJAX. Mais j'ai trouvé que quelque chose d'inattendu s'était produit. C'est que chaque fois que vous vous soumettez, Ajaxform ne pourra pas obtenir le contenu de commentaires actuellement édité, c'est-à-dire le contenu de TextArea. Vous devez cliquer sur Soumettre à nouveau pour soumettre le contenu de TextArea.
Le fait est que le contenu sur TinyMCE n'est pas mis à jour dans TextArea avant la soumission. Je voulais donc voir si Ajaxform a une liaison d'événements avant la soumission. J'ai trouvé que dans l'événement Beforesubmit, le contenu de FormData a été rempli. Bien que je puisse remplir le contenu TinyMCE actuel ici, je pense toujours que ce n'est pas très beau.
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 constaté que l'auteur d'Ajaxform a proposé une solution unifiée à ce problème. Le code source spécifique est le suivant:
1. Le code JS est le suivant:
La copie de code est la suivante: // crochet pour manipuler les données de formulaire avant son extraction;
// pratique à utiliser avec de riches éditeurs comme TinyMCE ou FckEditor
var veto = {};
this.trigger ('form-pre-serialize', [this, options, veto]);
if (veto.veto) {
log ('ajaxSubmit: soumis veto via le déclencheur form-prerialize');
retourner ceci;
}
2. Correspondant à fckeditor est similaire:
Copiez le code comme suit: // Bind Form à l'aide de 'ajaxform'
$ ('# commentform'). ajaxform (options);
// Liquez l'événement Form-Pre-Serialize et enregistrez les données TinyMCE dans la TextArea avant de déclencher l'événement de sérilisation du formulaire.
$ ('# commentform'). bind ('form-pre-serialize', fonction (événement, formulaire, options, veto) {
tinyMce.triggersave ();
});
J'espère que cet article sera utile à la programmation JavaScript de tous.